The distributed calculating system was initially created in Clojure, no it's re-written in Java
03 June 2019
Apache Storm 2.0 was released. It migrated from Clojure to Java.
The project allows you to organize guaranteed processing of various events in real time. For example, Storm can be used to analyze data flows in real time, perform tasks for machine learning, organize continuous calculations, implement RPC, ETL, etc. The system supports clustering, the creation of fault-tolerant configurations, the guaranteed data processing mode and has a high performance sufficient to process more than a million requests per second on a single cluster node.
Initially, the system was written in Clojure and runs inside the JVM virtual machine. The Apache Foundation launched initiatives to transfer Storm to a new kernel written in Java, the results of which are proposed in the Apache Storm 2.0 release. All the basic components of the platform are rewritten in Java. Support for writing handlers on Clojure is preserved, but is now offered in the form of bindings. Java 8 is required for Storm 2.0.0 to work. The multithreaded processing model has been completely redesigned, which has resulted in a noticeable performance increase (for some topologies, latencies have been reduced by 50-80%).
The new version also proposed a new typed API Streams, which allows you to set handlers using operations in the style of functional programming. The new API is implemented on top of the regular base API and supports automatic merging of operations to optimize their processing. The Windowing API for window operations adds support for saving and restoring state in the backend.
Health Samurai CTO, Saint Petersburg Ruby & Clojure, Piter-united communitites activist, speaker of RailsClub 2016.
At the conference, Nikolay talked about functional paradigm for Ruby coders.
After the conference, we've managed to talk with Nikolay.
How have you became a Ruby developer?
I came to coding late, when I was 25 years old, from radiopharmacy. For several years I was coding on php, java, C #. And then there was a project on ruby on rails, it was about 8-9 years ago.
What are you working on right now?
Developing a medical platform. Also, our team in engaged in developing international standard called FHIR and open source tools for it.
What's last interesting thing that you have learned?
ClojureScript * React is an interesting unite, that allows you to develop frontend easily and comfy.
In your opinion, how will Ruby and Rails develop in the nearest future?
RoR is a tool for fast web development, and it is good at it. I don't think that it's vector will change somehow. A lot of different good and helpful features will be created.
What's the main problem that RoR community faces at the moment?
That main Ruby activists migrate to other technologies, like rust, go, erlang, clojure and so on.
What is missing in Rails, in your opinion?
Simplicity and elegance are present outside, but not inside.
What’s your favorite programming language besides Ruby?
Clojure, definitely. For me, the transition from ruby to clojure can be comparate as java to ruby. Clojure is a functional language that allows to solve most of my tasks easier and more rigorous. Next comes a long list: dynamism and metaprogramming, interactive development, support for competitiveness, the ability to use java libraries, etc.
What technology, in your opinion, will be the most promising in the near future?
A big explosion in the frontend, I think there will still be a lot of discoveries. The containers grow (docker, rkt). Distributed and reactive systems (databases, processing of large data streams, queues, consensus). Renaissance of functional programming.
What is Open Source for you? In which projects are you involved and why?
We put in the open source a significant part of our work related to the FHIR standard (fhirbase, fhir.js etc). In general, if something can be opened, we open it. Because practical all our stack is built on open solutions, and we are part of this ecosystem.
What’s your favorite books about programming?
Structure & Interpretation of Computer Programs (H. Abbelson)
Domain Drive Design (E. Evans)
The Design of Design (F. Brooks)
What advice would you give to developers who want to achieve great success?
Never stop at what has been achieved. If in a year your professional worldview has not turned 180 degrees, then it's over. Speak / organize for meetings and conferences, do not neglect live communication with colleagues - it gives a serious motivation that you will not get from books and the Internet.
Who you wanted to became in childhood?
I don't remember anymore.
Not tired of programming?
No, it's only beginning.
What would you do if you had 2 months of free paid time?
I would read books on the beach, I think about life. At leisure, I would rewrite a couple of open-source projects. Generally a good idea.
RailsClub conference on which we managed to communicate with Nikolay will take place this year in Moscow 23th of September.