One common question in the IT ecosystem is: what programming languages do you use? Since programming languages are just a part of the development, I’m going to expand the question to what technologies do we use at Intraway?
Maybe 40 years ago, one programming language was enough. Applications were very simple back then, but now we have complex systems, interacting with each other. There are databases, messaging engines, applications running on network devices, on machines, on user devices. We also have to take care of the deployment of these applications. What about testing and continuous integration/ continuous delivery?
A Day in a Developer’s Life at Intraway – Technologies
One size doesn’t fit all
It would be very naīve to think that one programming language or technology will be enough to solve all our problems. Every technology has its advantages and disadvantages. Using the most appropriate language saves time and problems. Lastly, this is an ever-evolving industry, so today’s best option may not be so in the future. The key is to be always up to date and always learning.
Development
We use several programming languages for different purposes:
- Java: for core business services, using the Spring Boot framework as a base. And lots of libraries (Netflix’s zuul, hystrix, hazelcast and a lot-lot more)
- C++: for critical service applications, where resources are very limited (for instance, a couple of MB of RAM and disk) and performance is critical.
- PHP: for legacy or UI applications, using the symfony framework.
- JavaScript: for UI applications, using the Angular framework.
Most of our applications use those languages. However, sometimes we need to use something else, for instance:
- Go: my personal favorite. Still for experimental and small things, but very powerful.
- Bash scripting: since all our products are deployed in Unix-based OSes, mostly RHEL. So it’s very helpful to know some shell scripting.
- Python: because it’s powerful and easy, we have several utility scripts written in python.
- Groovy: mainly for our custom cradle plugins.
Databases
As with programming languages, we also use different databases for different purposes. Lately, we have been doing some research about documental databases, and they happen to be awesome.
- Oracle: not only for its tremendous power but also for all the tools surrounding Oracle Database.
- MySQL: because sometimes you need something simple, cheap, up and running.
- MongoDB: documental databases are a whole new world. MongoDB is growing very fast and it is very powerful.
- Redis: very lightweight, mainly for application metrics.
- SQLite: when you just need simplicity. Being the Most Widely Deployed and Used Database Engine doesn’t hurt either.
Other stuff
Of course, there are many more things we use.
What about version control?
How about building?
We use Gradle for building our applications, running tests, building docker images, making reports. Pretty much everything for every language.
Docker? How do you use docker?
Docker and Docker Compose were a life changer. We don’t need a building server or setting up the whole building environment in our machines. There is a docker image for building C++, java, angular or PHP applications. There is a docker image for every application. Do your application use MongoDB? Kafka? Zookeeper? Don’t worry, use the MongoDB image, the Kafka image, and the zookeeper image.
Do you need to set up an environment with several applications interacting? Easy peasy: docker-compose up.
We are currently checking Docker Swarm and it’s looking pretty good.
What about deployment?
Puppet, another life changer. Now developers are not only in charge of developing the application but also how the application must be deployed. Puppet comes to the rescue and helps us take care of how an application must be deployed and configured.
What about testing?
Apart from unit testing, we do functional testing with JMeter, Selenium and SoapUI.
What about continuous integration?
We rely on jenkins. Every commit on GitLab triggers a build in jenkins, building the application, building a docker image containing the application, starting a docker compose environment and running automated tests.
Is that it?
Of course not. This was just about the everyday usage. For every item mentioned here, we probably tried and analyzed several other options.
Conclusion
As you can see, here at Intraway there is a place for everyone. Whether you like very stable and well-developed languages like Java, or whether you like to try some cutting-edge technologies, like Go or MongoDB. We are constantly watching what’s new, what’s trending and how different companies solve different problems.
Does someone need to know all these technologies to work at Intraway? Of course not! We are constantly giving tech talks and courses for those who are interested in working on a certain topic.