In September, I had a presentation at IBM think Summit Belgrade. It was a good opportunity, to see how the sector changing, and what are the current thoughts of IBM. On several topics, I see space for improvement, because as I see the regular companies only started to taste the advanced topics, so no real experience they gathered.

Now I will share a reviewed version of my thoughts on the slides.

So let's jump into the presentation!

Good afternoon everyone (Dobar dan svima)! As you see my name, you can identify my parental Serbian bloodline. However, I unfortunately don’t speak the language, so I am going to talk in English.

When was the last time you did something unusual?

In your personal life?

In your professional carrier?

Do you occasionally break up with your habits?

This presentation is about that it is worth taking risks and discover new areas.

As you see, I'm coming from the finance industry. I think it is one of the most conservative sectors. How we can arrive to open source software? The world is changing, more and more challenges are coming from the technology sector. One of my favorite examples is IBM's. They realized that it is more cost-effective if they support the opensource community and only make enhancements in the community software, then develop it from scratch. In our case, we build up an organizational unit from scratch to have end-to-end responsibility. We have an R&D team, which investigates future solutions and we have a development team who is working on present solutions. From the operating system to the final microservice-based software, we have the source code, and we have the responsibility to fix any problem that may occur.

The time of the monolith solutions has ended. Like the dinosaurs, these will disappear. Today, we are living in an era of component-based solutions. I know it is shocking to hear but imagine your organization. You purchase a solution. What is the first step? You start to integrate it into your environment. The authentication, the authorization, the logging, the security integrations. Each system needs customizing all the time, even at a version upgrade. We started to build a component-based ecosystem. This system consists of a bunch of microservices. For the logging, we have one microservice. If we need to change the log format, just an adjustment in the service and all the developed microservices will use it immediately. Do we need to implement SSL certificate verification in our services? Just one component enhancement and all the applications will verify SSL certificates. That's a huge power for agility. One company, one methodology! All the developments are reusable. Not only in the Hungarian organization of OTP Bank, but on a group level. That's the agility what technology companies have already achieved!

Think it over! Nowadays all information channels have echoes of Cloud! This is still not the level what I'm talking about when I use the term “component-based architecture”. If you integrate cloud solutions, services they will still have integration costs. However, I accept the fact that some services are only available as a Cloud service. The question is always how you can find the best balance for your cost-effective operation.

One month ago, I saw my colleague’s presentation. He talked about how Facebook, Google, and the other technology giants develop to be able to serve planet-scale needs. In most cases companies don't have this high level of requirements. But be honest. In a year, how many times do you have performance issues in any of your applications? What if the automated scaling would help you to solve these issues?

We are using a functional programming language called Erlang, which is designed for highly available, fault-tolerant, distributed systems. This ecosystem helps us a lot. We can easily cut out functions from services and consume them from a scalable load-balanced service. This methodology helps to scale any components, even if we would need to serve the whole planet, we would be able to. Not a surprise that we are using an open-source database service which is also written in Erlang.

As you saw in the previous slides, we don't have any commercial software in our developed production landscape. Of course, we also use licensed software, but only for supporting our development environment. That's why we have the technological freedom to choose the hardware which is the best fit to our needs. We may decide how we solve technology problems because our organizational unit has both DevOps and a development team. We can solve problems on an infrastructure level, or with developments. Only the cost and a sustainable future are what matters. The Erlang ecosystem gives us two-dimensions to select the best equipment for our needs. One dimension is the service slicing, so we can scale down our power requirements, and we can have a massive parallel system with many small nodes. For small nodes, you can imagine hundreds of raspberry pi. On another dimension, we can have a system, like a Power system, with many threads, and we can utilize all of them.

As we are using open-source software, we don't have limits on licensing policies. Just one example!

You know! Your Oracle RDBMS would run faster on Power platform than on x86. Because of the extreme fast I/O and memory bandwidth, combined with the high computing capabilities. But you cannot select this platform because of the licensing penalties. And from time to time, you have to make a compromise, because of the software vendors’ policies. If you are using open source, you have the full technological freedom.

As I told before, Power is an excellent platform. I don't know how many technology addicted managers are in the audience, but I'm one of them. When I start using a server, the first moment which I'm waiting like a child at Christmas is the moment when I begin a source code compilation. At the very first moment, you will experience the difference in the system performance. Especially when you compile a code parallel. You will have a more exciting experience. In the past I took hours with Linux kernel compilation, to remove all unnecessary components.

The same was the situation with the first moment when I started to use the new Power servers. The processor computational speed and memory bandwidth are only two important factors. When we are talking about I/O performance, we arrive at the next step. As processors went multicore, we are often not able to utilize the full power of computing because of a lack of data. After a few cores uses, you hit the memory bandwidth limit. But now the processors have 22, 32 or even more cores. The same happens with the data from the I/O channel. A decade ago, when I first introduced PCIe SSD drives at the company, I proved how it beats the high-end storages. In this aspect, the Power servers are also fantastic. Just think about the dual-port 100Gb ethernet adapters. If you have a traditional x86 or SPARC processor-based system, you have a maximum 160Gb bandwidth on PCIe interface, but you need 200Gb to enjoy full speed. You can realize, the problem is not on the adapter side. With PCIe 4.0, you don't have this limitation in the Power9 systems. Finally, my favorite! The GPU's! With the GPU's the biggest problem is how you feed them with data. With the NVLink connection, you have a highway of data between the operational memory and the GPU. This performance is essential to unleash the tens of thousands of cores in the GPUs. As GPU based in-memory databases rise, they will make the current ones obsolete. Just imagine if you put your current PostgreSQL database to GPU based steroids. The results are amazing.

Imagine a table with 1 billon records. Join to this table 20 more smaller tables. Write a page size complex query. If you execute the query, with a full table scan on a dataset it will finish within a ten milliseconds range. That's a real power with Power systems.

The next station in our travel is the freedom for code optimization. This is one thing what is missing from nearly all boxed solutions. I think only Apple is taking care of this feature in their operating systems. Everyone who has experience in program compiling knows that compilers have optimization flags for different processor architecture features. Think about the open-source Linux operating system. The system builds from packages, and you have the source code for all packages. If you are constructing your infrastructure from standardized build blocks, you can optimize all the compiled binaries for your system. Even if you purchase a Windows operating system, it runs on nearly everything from the past decade. You can imagine how it is optimized for the newest hardware, if it’s compatible with a ten years old machine. Just imagine! If you can save 10% on your computational resources? How much is this in your yearly budget? I think it worth the efforts! You need to recompile your operating systems, programs, with the platform specific optimization flags. That’s the power of open source software.

I asked a question, at the beginning of my presentation. Can you remember? Here is my answer for the question. This year I jumped out from an airplane at 4000 meters altitude. I can tell this is the situation when you really step out of your comfort zone. It was a fantastic experience. My advice to you:

Be brave to overcome your limits and conquer new fields – in your work and in your private life, too!