Smart devices and explosion of data clubbed with one-click-away user experience is pushing the application architectures to be revamped. World 2020 is predicted to handle four billion connected people with 25+ million applications processing 40 petabytes of data. Consumers demand variety and choice with always-on services. This affirms the fact that the traditional software architectures, deployment models and slow release processes are not going to suffice.
Developing and packaging a large monolithic application requires a higher level of release co-ordination across distributed teams. Many a times, integration issues are not discovered until the last minute and this can drag the release. To the rescue, comes the micro-service architecture that provides a mechanism to break down the monolithic silos in to distributed loosely coupled autonomous services that can be developed, tested and deployed independently. This helps in the following ways:
- Separation of duties: Developers can focus on a specific service and develop the service using a language of their choice. This reduces the complex co-ordination issues across the teams.
- Making instant releases: Each service can be packaged, maintained and deployed independently thus enabling just-in-time releases.
Due to the distributed and granular nature of the micro-services, it can pose a few challenges.
- Integration and interdependencies across services: Though the services are isolated, they can be functionally dependent on each other. A composition of services needs to be built such that they deliver the required business goals.
- Portable deployments: A robust application deployment requires mirroring the production environment across Dev and QA. However, application still needs to be reconfigured based on the other scalability needs. Abstracting the application packaging from the infrastructure dependencies can make the application portable across different environments and thus a hassle free and a robust software release.
- Just-in-time releases: Instant just-in-time software releases require continuous integration and deployment along with versioning of the builds.
- Measure release effectiveness: A lack of visibility in to the release effectiveness, like hand-offs across the teams, code integrity and build sanity etc. can go unnoticed and immeasurable.
- On-demand provisioning of infrastructure: Creating a container or a container cluster requires Developers to have knowledge and experience on provisioning and managing infrastructures.
One of our DevOps partner, Bluemeric, has been supporting organizations to attain “DevOps excellence” and has recently announced its new version of goPaddle v3. goPaddle is an ALM platform for micro-services that gives an integration first approach where a micro-service architecture (design/composition) is created as the first step. Project management tools like Jira or Microsoft Team Foundation Server (TFS) can be used to create and manage software releases. goPaddle ensures that the active releases are ready for deployment anytime. It helps to create pipelines and associate them with releases planned in Jira/TFS. These pipelines can be triggered any time and the build effectiveness can be monitored.
Developers can now focus on their application development while goPaddle helps to package and build the services in the form of Docker containers, test and deploy applications based on the pre-defined workflows in the release pipeline.
The micro-services are packaged as docker containers such that the application can be designed once and can be deployed anywhere. Developers can leverage existing Azure cloud accounts to provision a clustering solution of their choice like Kubernetes or Docker Swarm and deploy their services. Azure Container Service(ACS) gives the flexibility to create scalable clusters like Docker Swarm and Mesos on top of Azure cloud using VM Scale set. goPaddle provides a seamless integration with ACS, such that Developers create the clusters on Azure in just few clicks.
Try goPaddle with single sign-on using your Microsoft account, register an existing TFS account, plan software releases, create Docker Swarm or Kubernetes cluster on Azure and deploy scalable applications seamlessly.