As engrenagens de um banco moderno giram de acordo com os processos financeiros dos negócios. Eles são mais complicados do que o habitual - essa regra funciona para tudo, ao qual você adiciona a definição de "financeiro". Por um lado, tudo é complicado por reguladores, inúmeras aprovações e partes envolvidas. Por outro - BPMS monolítico desajeitado (Business Process Management System). Neste post, mostraremos como você abandonou com êxito um desses sistemas e entrou em um código aberto flexível e funcional.

Programadores exibem processos de negócios usando notações diferentes. Agora, o padrão é BPMN (Business Process Model and Notation) - esses são arquivos XML com imagens anexadas a eles. Para trabalhar com essa notação, os produtos BPMS são criados - sistemas proprietários monolíticos que tentam acomodar as ferramentas máximas para o desenvolvimento de BPM: do editor da interface do usuário ao sistema de controle de versão.
Somente desenvolvedores que trabalham com esses sistemas há muito tempo podem expandi-los. No BPMS corporativo, é fornecida uma API REST, ou seja, os sistemas podem ser acessados e recebidos em resposta. Mas modificar o BPMS em si é quase impossível. É possível trabalhar com esse BPMS somente através de um conjunto limitado de ferramentas do fabricante - um sistema de controle de versão proprietário, compilador, implementador - geralmente para cada BPMS grande, um conjunto inteiro é desenvolvido. Essas ferramentas estão se desenvolvendo lentamente, os mesmos problemas podem persistir de release para release, porque não há tantas pessoas envolvidas no trabalho, como é o caso do código aberto. Em geral, os recursos do BMPS corporativo e as necessidades de seus usuários coincidem muito raramente.
Na publicidade desses sistemas, eles falam sobre o fluxo de trabalho de ponta a ponta e afirmam que o próprio negócio pode mudar os processos de BPM em tempo real. Mas, de fato, nem analistas podem fazer isso - apenas os desenvolvidos podem lidar com isso.
Um processo de negócios consiste em tarefas de usuário e serviço cujas sequências levam à parada final. No BPMS, por meio desses esquemas, você pode acompanhar o tempo de execução dos processos de negócios, bem como vários indicadores de negócios - por exemplo, KPI.Geralmente, precisamos fazer alterações de vários tamanhos nos processos de negócios. Costumávamos ter um processo de BPM para gerentes de clientes que se sentam em escritórios adicionais. Em 2015, fechamos alguns escritórios e transferimos gerentes para o trabalho de campo. Isso exigiu grandes mudanças nos processos de BPM, foi necessário introduzir outras funções, ações. Ou, por exemplo, a regulamentação do serviço de segurança econômica mudou e, em vez de dois coordenadores, agora existem três.
Primeiro, fizemos as alterações por meio do IBM Lombardi BPMS. Tendo coletado as falhas típicas dos sistemas de sua classe, também foi distinguido pela falta de documentação solicitada. Parecia que após a compra da Lombardi Software, a gigante do software olhou para a nuvem amorfa dos artigos que a acompanhavam e decidiu não tocar em nada. E mesmo depois de ler toda a documentação, era impossível fazer muitas coisas. Por exemplo, chame uma solicitação REST com autenticação HTTPS usando um certificado de usuário. Felizmente, a busca por uma alternativa foi um sucesso.
Camunda resolve problemas
Após trabalhar com o IBM BPM, chegamos à conclusão de que diferentes grupos de usuários devem poder alterar os processos de negócios. Algo insignificante no modo online pode ser contribuído por funcionários comuns de unidades de negócios. Os analistas de sistema estão mudando a sequência de tarefas nos processos de negócios. Novas integrações, alterações na interface do usuário e código do programa permanecem do lado dos desenvolvedores. E, para manter essa flexibilidade, todo o BPMS deve ser implantado em microsserviços.
Nós podemos fornecer essa abordagem com o BPMS Camunda de código aberto. É uma bifurcação do projeto Activity, que a equipe de desenvolvimento decidiu fazer mais vendas. Colocaram a documentação em ordem e começaram a desenvolver o Camunda separadamente, ganhando com a venda de suporte.
O BPMS Camunda permite editar processos de negócios usando Java padrão e suporta o compartilhamento de microsserviços. A mudança do BPMS para microsserviços oferece várias vantagens ao mesmo tempo:
- Livrar-se do monólito. Podemos dividir os processos de negócios por segmentos, vinculando-os usando Rabbit MQ ou Kafka através da fila. Os processos de negócios podem ser alterados isoladamente, rolar as alterações sem esperar por uma liberação completa.
- Livrar-se de um servidor de processos de negócios.
- Dimensionamento. Se estiver sob carga, qualquer servidor começar a cair, poderá ser clonado. Em picos de carga, você pode aumentar facilmente a produtividade executando várias instâncias de processos de negócios em diferentes serviços.
- Versionamento Se, por exemplo, você precisar atualizar a versão Java, poderá escolher vários microsserviços com versões diferentes do Java e executar a nova versão em paralelo. Cada microsserviço pode ter não apenas versões diferentes de software, mas também idiomas diferentes.
No futuro, planejamos transferir um de nossos maiores processos de negócios para Camunda - empréstimos corporativos. Tudo aqui é muito mais complicado do que o de indivíduos e até o de pequenas / médias empresas. Não se trata de um produto, mas de um esquema de crédito limitado que é aplicado, os limites são limitados no tempo, os mutuários geralmente fazem parte de organizações maiores, como as holdings, e as holdings têm algo mais a fazer. Os limites são determinados separadamente para cada uma dessas estruturas, e cada estrutura possui suas próprias estruturas correspondentes, cuja composição muda constantemente. Temos um processo de negócios em centenas de estágios. Fomos capazes de alterá-lo com Camunda e decidimos permanecer nele. Mesmo que os desenvolvedores decidam agora encerrar o projeto, os recursos atuais do sistema durarão mais três anos.
Nossa primeira versão do Camunda foi baseada no Websphere e, de fato, não era muito diferente do IBM Lombardi. Decidimos escrever os aplicativos que o serviço acessava no Spring Boot. Eles implantaram no Tomcat e não funcionaram por conta própria. Depois, Camunda pôde trabalhar no Tomcat, uma versão para o Spring Boot foi desenvolvida. Uma arquitetura completa de microsserviços já está disponível lá. Todos os aplicativos com os quais o processo de negócios funcionou foram implementados em uma arquitetura de microsserviço baseada no Spring Cloud.
Aconteceu que você pode alterar rapidamente a funcionalidade, não apenas nos serviços que atendem ao processo de negócios. O próprio mecanismo de BPM pode ser conectado a qualquer aplicativo de inicialização como uma biblioteca.
Camunda como um microsserviçoSurgiu a pergunta: quantos microsserviços elevar? Era possível criar um servidor para cada processo e colocar todos os microsserviços lá ou criar cada microsserviço e um processo de negócios separado para cada tarefa. O segundo seria mais conveniente, mas seria necessário organizar a interação dos processos espalhados pelos microsserviços individuais. Tentamos várias opções e resolvemos uma solução quando vários microsserviços são responsáveis por um determinado tópico e vários processos são agrupados lá. A comunicação ocorre através do REST ou através do Rabbit MQ. Agora eles lançaram um piloto em Kafka.
Perspectivas para BPMS
Os processos de negócios não apenas exibem o fluxo de trabalho dos negócios, mas também respondem a eventos que ocorrem em outros sistemas. Temos esses eventos acumulados por uma divisão separada do Big Data. Com base na análise desses eventos, novos processos de negócios são criados ou os existentes são alterados - isso ocorre após o fato, com uma frequência de, por exemplo, uma vez por dia.
Idealmente, os processos de negócios devem mudar para a mudança on-line - por exemplo, quando a demanda por determinados serviços aumenta, eles priorizam automaticamente sua implementação e realocam recursos. Isso pode ser alcançado através da automação, interação, por exemplo, Kafka e Camunda, mas isso é uma questão de pelo menos vários anos. Talvez agora na direção de mudanças no modo online, o mais avançado seja o banco Monzo inglês totalmente online. E também estamos trabalhando nisso.