As everybody is adopting various cloud solutions in some shape or form which may be Public, Private or Hybrid or even changing the architecture or approach to do things (for example microservices), it’s essential that we implement a very high degree of automation. With the traditional approach and architecture, we had few components which makes it easy to monitor, implement and support the infrastructure. But with a growing number of components and various pieces, it is no longer easy, reliable and feasible to do so.
We have a lot of proprietary solutions available to solve many of the obstacles, but many times we feel either they are too costly or not flexible enough to do things the way we want. We also have various open source solutions available which have advantages and disadvantages too. With open source solutions you can customize and change or make some tweaks to meet your needs, but that comes with pain that you need to spend time in development efforts.
Various companies and organizations also provide paid support for some open source technologies and we get a log of community support too. While it’s not possible to list all of the open source tools and technologies in one article I will try to list a few which are the more commonly used solutions.
Build Tools:
There are various tools available in this category like Ant, Make, Maven, Ivy, Gradle, Grunt, Rake and Gulp.
Apache Ant is mostly used to build java projects, but it can very well be used for C and C++. It uses XML files for build configuration.
GNU Make uses make file for build configuration. It can be used for almost any language.
Apache Maven is another XML based tool which used POM format. It is widely popular for java projects because of its ease for dependency management features. It also includes artifact release features.
Apache Ivy is similar in many respect to Maven and Ant. It is highly flexible and extensible.
Gradle is based on groovy. It combines many features from tools like Ant and Maven. Gradle scripts are nothing like groovy scripts which means you can customize your builds any way you like.
Grant and Gulp are used in JavaScript related build and automation tasks.
Rake is similar to Make in some aspects. It is written in Ruby and popular in the Ruby community.
Continuous Integration Tools:
Jenkins is a well known and very popular CI solution. Jenkins has a large number of plugins available for almost anything we need and if we can’t find any, there is a way to create a plugin yourself. It does lack some basic features out of the box and it needs plugins to accomplish anything.
TeamCity is an enterprise grade solution which will be available for free but with limited use. Team City is extensible through plugins. It provides various out of the box features like user and access management, user audits, code quality.
Travis CI is another very popular CI solution available in market.
GO CD is another open source tool which is widely used. It was originally created at ThoughtWorks and later made open source.
Some other available solution available are Integrity, Buildbot.
System Configuration or Infrastructure as a Code:
With growing infrastructure components, servers, applications, containers, and virtual machines it’s very hard to create and maintain all of these manually. We need to consider that systems are disposable and we need the ability to create the same system repeatedly and fast to meet our needs. We can accomplish a variety of needs using Docker, Vagrant, Ansible, Packer, Chef, Puppet.
Docker is not the only containerization technology, but certainly it has made it popular and easy to adopt container technology.
Vagrant makes virtual machine setup and maintenance easy using configuration files. Developers can have multiple configurations to meet their development and debugging needs or to match certain environments.
Packer takes the configuration approach one step ahead in a sense that we can create environments on multiple systems with the same configuration files.
Ansible uses simple text files like the configuration approach. Playbooks are a simple form of orchestration for systems or environments we would like to build.
Chef and Puppet are in the same category as Ansible.
Logs Analytics and Monitoring:
ELK stack combines Elasticsearch, Logstash and Kibana together to build a powerful solution for log analytics, monitoring, and troubleshooting.
Graylog is another log management and analysis tool.
Service Discovery: With hundreds of services running an organization, it’s no easy task to manage the endpoints, supply them to services and know who is using what endpoint.
Consul can be used for Service discovery and health monitoring.
Eureka and Zookeeper are also available solutions in the same space.
If you like this article feel free to read another blog on jenkins pipeline at https://blogs.perficient.com/digitaltransformation/2017/06/13/jenkins-delivery-pipeline-and-build-promotion/