In the past, software was built as big monolith applications, running either as a single process or as a few processes deployed on a handful of servers. The release lifecycle for these types of applications was slow, and as a result, updates were made infrequently. To release an update, the developer would package the application, hand it over to the operations team, who then deployed and monitored it to ensure that it was working perfectly. If a bug was discovered during deployment, the operations team would notify the developers who would proceed to debug the app. Since the applications consisted of code that was tightly coupled, debugging could take a while as it was difficult to isolate the problematic code and also, a small change to the codebase could end up breaking the build, thus requiring more changes to be made. As you can imagine, this was not an efficient way to build software.
Today, engineering teams prefer to break down big monolithic applications into smaller, independently running components called microservices. These microservices are decoupled from each other making it possible to develop, deploy, scale and update them individually. This enables software makers to release and update software as often as necessary to keep up with today's rapidly changing business requirements.
With the increasing number of deployable components, it becomes difficult to configure, manage and keep the software running properly. It is much harder to figure out how each component should be configured in order to maximize resource utilization while keeping hardware costs down. In order to manage this, we need some kind of system automation that includes automatic scheduling, configuration, supervision and failure-handling. This is where Digital Garage comes in.
Digital Garage is a tech startup from Santa Fe, NM which offers a container-based cloud Platform as a Service (PaaS) that provides space and tools for developers to build, deploy, manage, and scale modern applications. With Digital Garage, developers can focus on creating and continuously delivering applications, without being distracted by having to set up servers or infrastructure. To make this possible, Digital Garage makes use of various technologies which we shall look at briefly.
Docker and Kubernetes
Docker is an open source containerization technology that provides a means of packaging applications in lightweight Linux containers. Running applications within Docker containers has the following advantages:
Flexible: With Docker, an application's run time requirements are included with the application in the container. Because of this, the application is able to run in multiple environments. This also simplifies a company's DevOps. Since the application is packaged with its environment, the development and operations teams will be working within a similar set up. There will be no conflicts of application dependencies between the different teams.
Lightweight as compared to using Virtual Machines: Docker images contain only the content needed to run an application. This makes saving and sharing software much more efficient as compared to using virtual machines which include entire operating systems.
Secure: Docker offers the ability to run processes and applications separately from one another to make better use of the infrastructure. Because of this, an application is secured from other activities on the host computer. This protection extends in the other direction as well: the host computer is also protected against the software run inside a container.
Improved performance: Since you aren't running an entirely separate operating system, containers typically run faster than applications that carry with them the overhead of a whole new virtual machine.
To manage the containers used in a software system, Kubernetes is used. This is an open source platform that automates the process of deploying and scaling containerized applications. Kubernetes abstracts away the hardware infrastructure making it possible for someone to deploy and run software components without having to know about the actual servers underneath. When a multi-component application is deployed through Kubernetes, it selects a server for each component, deploys the component and enables it to easily find and communicate with the other components of the application.
Digital Garage adds the following features on top of OpenShift. These can be accessed through its web console.
- Source code management.
- Managing and promoting images at scale as they flow through the system.
- Application management at scale.
- Team and user tracking for organizing a large developer organization.
In order to focus on their core business and value proposition, Digital Garage decided to go for an Infrastructure as a Service (IaaS) partner instead of hosting the platform on their own private cloud. It needed a stable, high performant and secure platform that could run a Linux distribution. CloudSigma was selected for this as the services it offers fit these needs. With 10 Cloud locations spanning both the east and west coasts, Digital Garage customers can enjoy a fully redundant, low latency cloud infrastructure.
Because of the technologies it is built on, any application built with Digital Garage is immediately supportive of linux containers and thus deployable to a broad range of infrastructure and cloud providers without modification. Digital Garage handles many of the complexities of taking code and making it run so that developers can focus on what matters most: getting apps in front of real users and continual improvement through iteration and continuous delivery.