JetBrains has 10 years of history in the rearview mirror. You don’t make it that long without listening to the people that make you successful, your customers. Today, the depth and scope of work being accomplished using JetBrains products is truly inspiring and we want to learn more about our supporters and their projects.
I had the distinct honor to sit down with Nikita Ivanov, the CEO of GridGain, and ask him several questions that have occupied my mind for quite a while. Nikita is a respected expert in many fields including grid computing and functional programming. You can see Nikita speaking at technical conferences, follow him on twitter and you can also gain insight into the cloud computing domain through his blog.
Q: Hello Nikita, I'm happy we've managed to organize this interview. Could you please tell us more about you - who you are, what you do and where you live?
My name is Nikita Ivanov. I run GridGain Systems and we are located in Silicon Valley. Usually if Iʼm not online Iʼm either ﬂying, skiing or fishing bass.
Q: Whenever I hear cloud or grid computing, GridGain immediately comes to mind. Would you be willing to introduce your company and its mission.
We develop Java and Scala middleware that let you build high performance distributed applications that work in any environment: from a multicore laptop to grid to all kinds of cloud infrastructures. GridGain is the only software in the world that incorporates built from the ground up Compute and Data Grids - both based on our very unique zero deployment technology.
Q: Seeing GridGain gradually grow for more than 5 years, it looks like you guys are building on solid foundations. How did it all start? What were you, Nikita, doing before and how has it shaped your ideas?
The company was founded by me and Dmitriy Setrakyan in 2005. We both had worked on other grid computing middleware for the last 5 years before starting GridGain (and individually even before that) - so we knew thing or two about the subject.
The idea behind GridGain is very simple: we wanted to do for Grid/Cloud Computing what Spring/JBoss did for Enterprise Java computing… Remove unnecessary complexity, provide modern tools and make developers productive and enjoying their work.
I think weʼve come a long way to this goal and thanks, in part, to our project Grid Computing (and distributed computing in general) feels and looks a lot differently today than it was just 5 years ago.
Q: Definitely it does. I assume it is getting quite crowded up in the clouds nowadays. Why do customers typically choose GridGain?
Look at our screencasts… I think for many users it is a startling realization that you can have your very ﬁrst MapReduce application in Java or Scala in about 10 mins after downloading GridGain. And as they dig deeper - GridGain grows with them providing one of the most exciting set of functionality among any distributed platforms today.
I think itʼs this unique capability of GridGain being as simple or as advanced and unique as your requirements dictate. There are no trade-offs in either side of spectrum.
Remove unnecessary complexity, provide modern tools and make developers productive and enjoying their work - Nikita Ivanov, GridGain
Q: Is there a single unique feature speciﬁc to GridGain that no-one else has?
I always emphasize three that are unique to us:
- Compute and Data grids built from the ground up and not emulating one with another
- Zero deployment technology seamlessly delivers code updates throughout the grid/cloud topology - eliminating any need for re-building, re-deployment, re-restating, awkward IDE plugins and tool chain, etc.
- FP-based APIs on both Java and Scala (of course) sides.
That pretty much deﬁnes GridGain for our customers from the features perspective.
Q: What was the core philosophy, the fundamental idea, you built GridGain around?
We are building GridGain for ourselves ﬁrst. This is rather unorthodox approach. We do listen to feedback from our users - but we value our own feedback/feeling/senses the most. Thatʼs why the product looks and feels so cohesive. When you work with GridGain it feels as if it was written by one person with a clear idea and the same implementation approach to all parts of the software.
So… cohesiveness is what Iʼd call our core philosophy.
Q: What are you guys working on for the next major release?
We are looking at several directions and I think youʼll be surprised when we announce what we are planning :)
Q: Great, I always like being surprised. Still focusing on the future, where do you see the whole ﬁeld of distributed computing going? How cloudy will it be in 3 - 5 years from now?
Very cloudy :)
First of all, I hope we are at the end of the cloud bubble with dozens of companies popping up with websites/plugins for deploying the apps into the cloud. We have enough already. The problem is solved and we, as an industry, really need to move on to stay honest with our rapidly loosing customers patience.
I think that the next big shift will be in how we build our business applications. Itʼs not a secret anymore that 90% of the JEE apps written in the last 5-10 years wonʼt work any better/reliably/faster when deployed on the cloud - if they would work at all!
We are seeing this almost at every large company we deal with: “Ok, weʼve got the cloud running all right… WTF do we do next?!? Whereʼs scalability, elasticity, fault tolerance for our 5-year old JEE app weʼve just deployed?” The answer today - nowhere…
Q: Talking about overcoming the current programming models, multi-core chips demand that we change the way we write code targeted to single machines. Cloud computing offers ways to distribute data and computation across networks. Do you view single-machine concurrency and distributed computing as two separate domains? Do you think the two models will ever be uniﬁed and what would it look like?
Absolutely - but a bit later on. But even today if you consider Inﬁniband, for example, the network latency are negligible and onus is primarily on middleware software to provide such uniﬁcation for application developers. Our work on Scalar DSL (DSL for general purpose distributed programming on top of the GridGain) is our ongoing effort in that exact direction...
Q: Do mobile platforms ﬁt into the cloud picture? Will we see GridGain running on mobile devices soon?
Weʼve had GridGain running on Android in 2008. As much as I liked and still like the idea the demand for this type of software running on mobile devices is still low. But this market is changing so fast - who knows… My answer can be very different in 18-24 months from now :)
Scala is a language of smart compromises and extremely practical as such - Nikita Ivanov, GridGain
Q: Looking at the GridGain Java API I can feel a very strong functional ﬂavor. Why did you go this route?
After we started working on our DSL we realized that we need to make our host Java-based product a lot more functional in its design and APIs - otherwise we wouldnʼt be able to provide usable Scala-based DSL on top of it.
That led to creation of one of the most advanced FP library for Java. Today GridGainʼs FP support is the only FP framework that is naturally distributed by design. Where else you can create a closure and execute it on the grid in MapReduce fashion… in Java!
Q: Making Java functional must certainly feel like taking the language close to its limits. GridGain also provides a Scala API to its services. Do you ﬁnd Scala up to the task of pushing development on JVM forward? Where do you see Scala's main beneﬁts to the programmer?
It is a loaded question and I can probably spend few hours advancing this point along… We view Scala as a natural winner in a battle for the “next Java”, if you will. Itʼll take time though. Unlike niche languages like Ruby, Groovy, Clojure, etc. the Scala is designed as a general purpose commercial grade language and will take number of years to mature. Thereʼs simply nothing else on the market today that can remotely compete with Scala when it comes to developers appeal, ﬂuent integration with Java-based software, performance, expressiveness and, most importantly, lack of dogmatic academic smugness that is so prevalent in many languages. Scala is a language of smart compromises and extremely practical as such.
Q: I know you build your opinion on real facts. Can you describe how you guys use Scala to develop GridGain itself? Did Scala give you a new perspective?
We use Scala extensively inside of GridGain for internal and external parts of the product and helping out customers with Scala projects. It certainly opened us to the world of hybrid FP/OOP software design and development.
Q: Back to GridGain, you founded the company back in 2005 and have gone through many stages. If there was one thing in its 6 year history you could have done differently, what would it be?
Hire better people and make sure to retain them. Nothing - and I repeat nothing - is more important for the young company than “to get the right people on the bus - and get the wrong people off the bus”.
Q: Very true, especially when you're building sophisticated products like yours. Can you think of a smart design decision you made that paid the highest divident over time?
Our SPI-based architecture immediately comes to mind. Essentially, GridGain is a set of LEGO blocks where for each shape we have multiple colors available - and you can build your own blocks too!
That gives our users an enormous ﬂexibility in how they conﬁgure our systems. Unlike every other similar product on the market - GridGain users adopt GridGain software to their need and not the other way around. We are trying to be a “library”, and not a cathedral “framework”.
Q: I also know you are a passionate user of IntelliJ IDEA. Does IDEA meet your needs when working on/with GridGain?
Over the years weʼve obviously tried everything under the sun - from vi/emacs to IDEA/Eclipse/NetBeans. Weʼve settled on IDEA long time ago and I canʼt seem imagine how someone can code without it :)
Q: Is there anything special an IDE can do to help develop cloud applications?
- donʼt get in a way!
- improve the Scala plugin :)
Seriously - IDE is just an IDE and should concentrate on what it does best.
Q: Do you have a favorite IDEA feature?
- Inspections, of course. I canʼt count how many bugs it saved us from in our product.
- Attention to details. In so many places you just feel it was developed by devs for devs.
Q: You and your company are deﬁnitely pushing the envelope quite a bit. Where do you go for inspiration?
Nothing - and I repeat nothing - is more important for the young company than “to get the right people on the bus" - Nikita Ivanov, GridGain
Itʼs hard to say… We donʼt draw it on purpose. I guess for many of us itʼs our users. Our software starts every 10 seconds around the globe and every minute we know someone is using GridGain, trying something, compile against it, running our examples, looking at our Javadoc and Scaladoc. That feeling makes us honest about our efforts and amplifies our intellectual curiosity - and off we go improving and extending our software.
Q: Do you have a recommendation for our readers on just where to start to get themselves up to speed with cloud computing?
I would not recommend starting with “Cloud Computing”… Itʼs like starting with SOA - the term is completely meaningless by now and there are so many aspects to it. If you want to learn how to develop distributed applications that work natively on the cloud infrastructure - GridGain examples (shipped with the product) is a good start.
Q: Which books are high on your list?
Couple of the books Iʼve read lately are strangely about emacs :) Iʼve been vi person for almost 20 years and needed to get a perspective on emacs as we are trying to emulate it in our Visor project - scriptable monitoring & management utility for GridGain. Iʼm also reading up on DocBook and preparing for my Private Pilot certification. So, there you go - pretty diverse :)
Q: I'll get a chance to meet you in person at GeeCON, Krakow this year, where you will speak on Distributed Computing with Scala and GridGain. Are there any other events where people could see you this year?
We donʼt have much planned for the next couple of month. We have a presentation in Krakow, conference in Kiev and a JUG presentation in Hartford, CT. All dates are on our website.
Q: What do you typically do when you're not at you desk or on the road?
I have four kids so iʼm pretty occupied when Iʼm not working… But I try to work at least 55-60 hours a week so the free time is sparse.
Q: Is there anything about yourself you think our readers would be surprised to learn?
I think some ﬁnd it a bit unique that Iʼm still writing code and roughly ~30% of the GridGain is written by me. But I personally cherish our “renown” on the market as Engineering Company first - and everything else is second. So, despite of lofty titles and everything else - we are still a bunch of engineers who love to write code and produce quality software.
Q: Nikita, thank you a lot for answering my questions. I'm sure your insight will help our readers enjoy the clouds as well as the sun.