We have gone from configuration to code driven development flow. Developers have rejoiced at the chance to use code to create their services over XML.
Our original flow:
While we are also in progress on creating a Continuous Integration (CI) flow to reduce delivery time, there are still some minor hurdles in terms of deployment and testing and keeping everything “like prod”.
A New Dance
Our team was a the inaugural release of Ballerina (1) at WSO2Con USA 2017 (8) and immediately saw its potential. Instead of having various tooling and configuration solutions, we could now have all aspects of the deployment lifecycle in the very code that is being maintained and deployed.
The initial deployment of our first production ballerina backed service was for a single resource of one of top-5 used services. A good blend for a widely used services and segmenting potential failures to a single resource. We have had this in production with zero downtime, data loss, or issues for over a year.
As this was the initial deploy, it was built and deployed manually to our Kubernetes (5) cluster.
Since the initial deploy of this service we have on-boarded several development teams ranging from Mobile/Web-App, Security, SaaS, and Infrastructure. To prepare ourselves for a rush of incoming Ballerina deployments we created a scaffolding CLI and deployment pipeline.
Current Deployment Overview:
I’ll go into more detail of current deployment pattern in a future post.
One of the largest components of our environment that I did not go into great detail about is our culture of collaboration. For every technical decision that is made there is a non-technical impact. Our team has been termed the “Rogue in Context” team for good reason. Using the inter-team relationships that we have had for years, we were able to go from build, deploy, run model to a true DevOps approach. Instead of having to send an email for an environment rebuild we can now configure some upstream items and kick off a pipeline build to build and deploy entire environments. This wasn’t well received initially, but the organization is coming to realized the speed of adaptation and quality that we have created. You will want to have this type of culture to some degree for Ballerina to be well integrated into work flows. If your organization still thinks the Earth is flat, aka throw the pig over the wall operations, then this language will make you your org’s Giordano Bruno (9).
Ballerina (1) will enable fast, quality, 12-Factor (7) ready deployments out of the box. The strong annotation set is great “batteries included” approach that will have Devs and Ops collaborating from the start of development.
If you don’t have a DevOps culture or want to build one, this is a great catalyst point for starting that conversation.
- https://ballerina.io (1)
- https://jenkins.io/ (2)
- https://about.gitlab.com/ (3)
- https://www.docker.com/resources/what-container (4)
- https://kubernetes.io/ (5)
- https://wso2.com/platform (6)
- https://12factor.net/ (7)
- https://wso2.com/library/conference/2017/2/wso2con-usa-2017-introducing-ballerina/ (8)
- https://en.wikipedia.org/wiki/Giordano_Bruno#A_martyr_of_science (9)
- http://www.northernrenaissance.org/wordpress/wp-content/uploads/2015/11/FerrariBrunoTesta.jpg (10)
- https://search.creativecommons.org/photos/e80a987b-b83f-44c4-b273-f0a7d079ab32 (11)