The Rise of DevOps
DevOps (development and operations) is a fairly new buzzword that has been creating plenty of noise in the industry. It’s become a subject that many like to talk about, but not everyone completely understands. In this post, I’ll explore what DevOps is in the context of Hazelcast, talk about key players in a DevOps organization, and share what Hazelcast offers to make the life of DevOps a little easier.
What is DevOps?
Generally, DevOps is viewed as the driver that provisions and maintains infrastructure to ensure continuous delivery of the software. But truly, and by the virtue of definition, DevOps is a process that emphasizes the role of both software developers and information-technology professionals with an emphasis on IT operations. With Hazelcast being a distributed system where a cluster may run on few hundred nodes, it becomes even more important that both parties in their respective jobs follow this process with the same vigor individually.
On one hand, developers have the power to create software that solves complex business problems or scientific algorithms to generate billions of dollars of revenues. And on the other, IT ops are the owners of provisioning and maintaining expensive infrastructure, which runs the software. But to extract true value from their respective products and expertise, developers and IT operations need to communicate closely and collaborate across their functions. Together, they have the responsibility of creating a system that runs on an infrastructure which is also able to justify financial costs by delivering consistent and stable performance.
In his free e-book – What is DevOps?, here is how author Mike Loukides explains DevOps:
“…modern applications, running in the cloud, still need to be resilient and fault tolerant, still need monitoring, still need to adapt to huge swings in load, etc… …Operations doesn’t go away, it becomes part of the development. And rather than envision some sort of uber developer, who understands big data, web performance optimization, application middleware, and fault tolerance in a massively distributed environment, we need operations specialists on the development teams…. …Rather than being isolated, they need to cooperate and collaborate with the developers who create the applications. This is the movement informally known as DevOps.”
This definition could not have been truer in the context of an IMDG solution that Hazelcast is, one that is infrastructure agnostic i.e. commonly deployed on physical machines, VMs and cloud, over a cluster of few hundred nodes. This is where it becomes even more important for developers and IT operations to work as one team as the same software can deliver different performance on different types of infrastructure. Hazelcast understands the importance of DevOps, hence have come up with Hazelcast Deployment And Operations Guide to assist DevOps in deploying and running a Hazelcast cluster in a resilient infrastructure that has flexible tolerance for faults to mitigate the impact on business. The guide will take you through various aspects of writing Hazelcast backed application and deploying on your favorite infrastructure. Highlights of this guide are:
Network Architecture and Configuration:
- Hazelcast deployment strategies
- Cluster configurations
- Network tuning
- Cluster Protocols
Lifecycle, Maintenance and Updates
- General lifecycle of cluster components
- Data distribution in the cluster
- Patch Updates, Software upgrades
- Hardware, OS and JVM updates
- Hardware and Network tuning and best practices
- Data distribution and Queries
- In-Memory computing optimizations and tuning
- General optimizations
- Size a cluster for deployment
- Enterprise Security Features to secure a cluster
- JAAS based security
Deployment and Scaling Runbook
- Standard deployment practices
Failure Detection and Recovery
- Failure detection and automatic recovery
- High Availability (HA)
- Monitoring and Stats collection
- Split Brain syndrome
I’ll end this post by saying that if you are a Hazelcast user, this DevOps guide will be your friend that will help you write and deploy a software with minimum risks and maximum utilization of the resources to extract best possible performance from your system.