“Our reliability requirements are higher than the average enterprise”: Deutsche Bank on Java development and conferences
The Deutsche Bank Technology Center is known for its Java speakers: Ruslan Cheremin and Alexei Ragozin have been speaking at conferences for a long time, choosing far from the most accessible topics for presentations, and both writing on a technicalblog . Deutsche Bank participated in Joker 2016, and we used this as an excuse to ask Cheremin and Ragosin a few questions.
')
Ruslan Cheremin (senior developer)
- Usually they simply know about you “he is from Deutsche” - and can you tell us about exactly what you are doing there and how exactly (for example, what tools do you use)?
- We are engaged in the foreign exchange market. In particular, the team in which I work is engaged in generating prices for currency instruments - we collect information from many markets, apply special magic to it, and decide at what price we are now ready to trade this particular currency with our customers Deutsche Bank.
We don’t have anything very unusual about the tools: Deutsche Bank has a license for IDEA, although some experts are still working out of Eclipse. We use Maven and Ant to build, neighboring teams use Gradle.
- In “Without Slides” you said “it turned out that Deutsche Bank just needed such a specialist as me” - and what exactly did it mean “like you”, what exactly was the role correspondence?
- At that moment, my current team was going to rewrite the price generation server from scratch - with Disruptor, and other tricks. They had a vacancy for the person who will be the main developer of this new server, and with his help will achieve new beautiful figures of latency. And here I am with a report about Disruptor, and I'm just going to leave Yandex, and am very interested in the opportunity to work in the low latency domain. In preparation for the conference, we met Volodya Dolzhenko, through whom I ended up in Deutsche.
- Tell for those who are far from the banking sector: what are the specifics of Java development in a place like the Deutsche Bank TechCenter, which distinguishes it from Java development in general?Increased reliability requirements?
“Of course, our requirements for reliability are, of course, higher than the average enterprise, but still we are not launching the shuttles here - there is no transcendental something. Reliability is mainly provided by redundancy: for example, out of two dozen data sources that our server listens to, only five of them are actually used at any given moment - obviously, the highest quality ones. The rest are simply in the replacement cage, if suddenly the quality source becomes silent - we have less quality, but still working. And such redundancy on many levels.
The peculiarity of the banking sector is that it is very regulated and verifiable. Therefore, a large part of the business requirements is to meet the needs of auditors. For example: we save a lot of information about what is happening in our systems, and store it almost forever. For example: a significant part of the requirements for reliability does not come directly from our business, but comes originally from auditors / regulators (sometimes these requirements look rather strange in the context of a specific application).
- At JPoint 2016, you talked about escape analysis - can you give any specific example of how his knowledge helped cope with a specific work task from work experience?
- No, I can not :) This is a fairly fresh study, and he hasn’t found any noticeable use in my work. Our performance-critical applications were written in the times of fairly old versions of Java, and much more oak optimization methods were used there. And to rewrite the straightforward and reliable for fashionable and youth just because it is fashionable and youth ... I’m waiting for new projects - perhaps it will be more useful there.
- Well, this is too fresh - and in the case of themes like the Java Memory Model, which was reported in 2013, there are specific cases of “did it help here”?
- Yes, the same weak caches in our code are used a lot where they are and help reduce the load on the GC. In hot places, we have concurrent maps or buffers specialized for a specific scenario.
In general, JMM knowledge is an auxiliary skill, the main use for it is to filter out deliberately incorrect decisions. In most cases, I look for a solution that is suitable for functionality, design, performance — and the memory model acts as a filter that rejects ideas that are difficult to implement in multi-thread conditions, and vice versa, suggesting proven multi-threading patterns.
There are quite a few tricks like the benign race. Most of the practical application of JMM is to not do silly things and be simpler.
Alexey Ragozin (solution architect)
- You are a pretty "hardcore" specialist.Deutsche Bank is right for you because there are many suitable tasks?
- By his standards for "hardcore" I do not pull. In the RTC there are teams that solve problems from the category of ultra low latency, that's where the "hardcore". But Deutsche really attracts me by the fact that very often it is necessary to solve tasks that do not yet have “typical” solutions in the industry. I would say that if you are interested in doing certain technologies (for example, in-memory data grid), the Deutsche Bank TechCenter is almost the only place.
- You have quite an active public activity: repeatedly spoke at conferences, lead an English-language blog .What is your main motivation for this?
- In addition to the blog and conferences, I taught for a long time at the second higher education courses at Moscow State Technical University. Bauman, and now I teach two courses in the Java-school of our technology center.
But returning to the question, the main goal is to expand the circle of communication, exchange views. Speeches and blog articles provoke a response from readers / listeners, very often I learn something new.
- About Java-school is curious: what are the two courses?
- One is about profiling Java applications, the other is about garbage collection. Overlaps with my two reports on the JPoint.
- Sometimes it is considered that self-education is enough: they say that you can find any answer on StackOverflow.And why is Java school - what does it give, what will you not get in Google?
- The school gives a lot. Roughly speaking, until a person understands a problem, he cannot correctly ask a question. And accordingly, can not find the answer to StackOverflow. It's a vicious circle. Therefore, many engineering tasks require some “academic” base before a person can independently search for a solution to a specific problem using publicly available resources. And this is true not only for narrow technical topics such as tuning a JVM, but for very different ones. No StackOverflow will teach you how to properly use a complex framework or design an application architecture.
Finally, the reports that Cheremin and Ragozin made in recent years at the conferences of the JUG.ru Group: