How Eldarion Helped Bring Scalable Python, Django to Gondor
When Platform-as-a-Service provider, Gondor (not to be confused with The Lord of the Rings’ fictional kingdom of the same name) wanted to make its Python and Django services more scalable, it looked to the open-source Kubernetes orchestration engine to get the job done.
And, given that this new microservices-based architecture will have many containers popping in and out of existence as customers spin up and shut down workloads, Gondor contracted with consulting firm Eldarion (not to be confused with the son of Arwen and Aragorn, a fictional character also inhabiting LotR) to build out a set of monitoring tools.
Eldarion approaches monitoring from the perspective of helping customers understand what was happening in their stack over time. Whether this means collecting metrics on system performance, capacity, or debugging, Gondor’s monitoring system is leveraged in such a way that clients can better analyze system issues that may arise.
The Many Tiers of Monitoring
How Eldarion approaches monitoring is a uniquely tiered perspective which showcases how well it has embraced the power of Google Kubernetes and CoreOS since migrating to the platform in July of 2015.
Brian Rosner, chief architect and steward of Gondor notes that “Monitoring happens at many different layers. As such, there are cluster, system, and container metrics. Container metrics could largely be seen as app metrics because the line between container and system metrics that are not app metrics is quite blurry.”
When collecting these metrics, Eldarion uses the information reported to help understand why and when Gondor needs to scale.
Rosner notes that Gondor’s developers look at system metrics including CPU, disk I/O, network I/O, and RAM to better understand how its nodes perform under stress. Based on this, its team can then get a better idea of Gondor service size classes and how they may perform across various node types. Rosner further explained that Gondor’s developer team also looks at “Cluster-level metrics: Containers per node, scheduling, and the rate of container creation to understand when we need to scale up or down.”
Why go to all the hassle of breaking down performance metrics for Gondor on a per-node scale? For Gondor, the answer is simple: Providing a better service for its customers. While Kubernetes and CoreOS provide its team with much in the way of flexibility and features, “It’s still vital to know how clusters are performing over time,” said Rosner.
Transitioning to Kubernetes offered Gondor the ability to allow customers more flexibility in scaling their infrastructure while also allowing Gondor clients to run the client on a private cloud if they so chose. Monitoring Kubernetes clusters becomes simpler due to not only the ability to utilize a scheduler such as Mesos, but the network structure of Kubernetes itself.
The Future of Gondor
Since rebuilding Gondor on Kubernetes, the team at Eldarion has released two open-source projects back into the community, with more to come. The k8s-http-router is as it sounds, an HTTP router that routes HTTP requests to Kubernetes services using the HTTP host header. Piper is a library built to aid in running a process locally, but actually, run it via a remote connection using WebSockets. While both of these services are still in development, Gondor hopes to offer the Kubernetes community more open source projects moving forward.
The Gondor hierarchy consists of sites, instances and services. “Sites have instances while instances have services. Instances provide a level of abstraction around your Q/A process. You run production, staging and development instances separately and can easily move code and data between them,” said Rosner. Rosner explained that Gondor Services are comprised of individual web or worker processes, such as a PostgreSQL database or Redis cache.
Developers just getting started with Gondor will first notice that its app provides a Procfile to tell Gondor what to run for a given service. The rest of its configuration is rather straightforward, handled through the gondor.yml file and its API, which is interacted with via a CLI client. Rosner notes that Gondor takes care of the rest, allowing developers to get started deploying their software faster.
If you’re interested in checking out Gondor’s new Kubernetes-backed solutions for yourself, sign up for its private beta here.
CoreOS is a sponsor of The New Stack.