Mainframe to Microservices

Mainframe to Microservices

I'm happy to announce that this month I and four colleagues managed to finish a project that allowed the migration of an application from the mainframe environment to a microservice running in the cloud with a web front-end.


The business rules of the application

It is an application that checks if people with privileged information make the previous declaration of purchase or sale of specific securities in the stock market. The CVM, which is the Brazilian regulatory body for our B3 stock exchange, makes this requirement. That is, as these people could know, in advance, of information that will cause changes in the price of the assets, they need to declare their intention to buy or sell them with a minimum time in advance.


The technology change

The front end with the black and green screens written in Natural (Software AG's mainframe programming language) has changed for a front end made with Angular 9.

The back-end of online transactions ran in COBOL/CICS and batch processing performed in procedures with COBOL, Natural (to access an Adabas database from another system) and Syncsort.

Now, a microservice written in Java/Quarkus, that runs on Kubernetes, expose APIs to our front-end. This same microservice has a schedule that starts its batch process.

As this microservice runs in more than one instance (Pod) on Kubernetes, we created a lock rule that ensures only one instance can run the batch process.

We created a temporary microservice in Java/Quarkus that migrated data from DB2 database to Oracle database. This microservice use an interesting feature of Quarkus that allow the application to connect with multiple data sources using Hibernate. For those interested in this, here's one study project I've created to this purpose:

We use Tibco/Spotfire to make comparative studies of the migrated data and also to evaluate the result of processing the new batch system.

We set up a monitoring microservice that verifies the health of the system, displays the data on dashboards in Grafana and sends automatic alerts if problems occur in the application.

Although the old system was deactivated, there are still some pending issues to be resolved in the new system.


Advantages and disadvantages of the migration

And what were the advantages and disadvantages of this change?

Disadvantages

As a disadvantage, I mainly see the batch process. The mainframe environment provides us with many facilities for this environment, such as schedule, tools for handling files, monitoring and performance that is difficult to match.

Another downside is that the learning curve for someone to develop and maintain a mainframe application is much less than that required for a microservice environment.

The technological changes of the mainframe are also much smaller, a stable application in production can run for years or even decades without the need to be modified.

In the microservices environment, the application needs to adapt to changes frequently.

Advantages

As an advantage we can mention the possibility to choose between some options of programming languages and frameworks to better meet our problem.

The salary of people who work with mainframe is usually more expensive, this is another advantage in this environment.

The application can run on any platform that supports container execution, so we are no longer stuck with mainframes, theoretically now we can run in any cloud provider as AWS, Google or Azure.

The build pipline of the application can contain very complete automated tests that give us confidence that a modification did not introduce a bug.

The deployment process in container orchestration environments, such as Kubernetes, allows us to use techniques to update the software in production at any time of the day, affecting our customers to a minimum.

In the example of this project, this was not so evident, as this was a small system. But for a large system on the mainframe, its division into smaller microservices would bring other advantages, such as the possibility of scaling a larger number of people to work on the application, since independent microservices would not cause deployment bottlenecks.

New team members would find it easier to learn a small microservice than the entire big old application.


Final words

To finish, it was a very interesting experience for me. I was able to use my mainframe knowledge to understand how the old system worked and I had the opportunity to exercise my new knowledge, especially with Java, Quarkus, Microprofile, Docker, Kubernetes, Oracle, Prometheus, Grafana and Tibco/Spotfire.

At the moment, I am studying Angular 9 and I intend to be able to work with this technology soon.

I thank the colleagues who participated in this journey with me, Thiago Vinícius de Lima Pádua, Jo?o Paulo Lira de Sousa, Rondson Da Silva Modesto Lima and Jo?o Pedro Oliveira de Jesus.

Fernando Mandolini

Regional IT Manager for Europe | Executive | IT | Leadership | Agility | Transformation | Mainframe | Cloud

4 å¹´

Great work...

要查看或添加评论,请登录

Felipe Henrique Gross Windmoller的更多文章

  • Qual é o Tamanho Ideal de um Microsservi?o?

    Qual é o Tamanho Ideal de um Microsservi?o?

    Repensando Microsservi?os: Uma Breve Introdu??o “Microsservi?os” podem parecer um jarg?o, mas s?o mais do que uma…

    7 条评论
  • How Big Should a Microservice Really Be?

    How Big Should a Microservice Really Be?

    Rethinking Microservices: A Quick Introduction “Microservices” can seem like a buzzword, but they’re more than just a…

    4 条评论
  • As Sombras do Domínio: A Caverna de Plat?o e os Modelos de Software

    As Sombras do Domínio: A Caverna de Plat?o e os Modelos de Software

    Introdu??o A conex?o entre filosofia e engenharia de software pode n?o parecer óbvia à primeira vista. No entanto, ao…

  • Shadows of The Domain: Plato’s Cave and Software Models

    Shadows of The Domain: Plato’s Cave and Software Models

    Introduction The intersection of philosophy and software engineering might not seem obvious at first glance. However…

    1 条评论
  • Strategic Moves: Exploring the Chessboard of Domain-Driven Design

    Strategic Moves: Exploring the Chessboard of Domain-Driven Design

    Software development and a game of chess. At first, it might not be obvious to compare these two subjects and they…

    2 条评论
  • POC to parallelize long time processes using Kafka and Quarkus

    POC to parallelize long time processes using Kafka and Quarkus

    Imagine you have a big amount of items to process and each one takes a long time to finish. This POC proposes one…

  • POC to copy images through http

    POC to copy images through http

    On a recent project, the application I'm writing will return to the front end some URL of images that won't be…

  • B3 Open Investment POC with Quarkus

    B3 Open Investment POC with Quarkus

    B3 open investment B3 is a Brazilian stock exchange. As their website says: They are creating APIs that will allow…

  • POC with Financial Information eXchange (FIX) protocol and Microservices

    POC with Financial Information eXchange (FIX) protocol and Microservices

    The FIX protocol and QuickFIX/J Quoting the QuickFIX/J website: The Financial Information eXchange (FIX) protocol is a…

    8 条评论