Lithium's New, Microservice-Based Container Architecture, Courtesy of Kubernetes and Mirantis OpenStack
Lithium delivers Social as a Service: their SaaS platform hosts a fast-evolving toolkit letting customers embed highly-customized social functionality in websites; manage campaigns and track free-range conversations across the global social web; keep track of website and brand social health with intuitive heads-up metrical indices, and drill down to analyze deep social metrics, ensuring optimal ROI from social media and community investments.
To deliver all this value, Lithium has engineered a sophisticated, cloud-native web application architecture with demanding requirements. They need to be able to scale out on demand, deploy complex clusters of interdependent services in manageable ways, and maintain strong tenant isolation -- ensuring good performance for each client’s applications, providing reliable security for customer business data and wrapping potentially-sensitive social PII in strict compliance policy.
Initially (i.e., a year or more ago) Lithium saw no viable alternative to building their apps classically, in monolithic form, for deployment on virtualized infrastructure. They used Mirantis OpenStack to build a manageable production IaaS cloud with the requisite multi-tenant isolation, and OpenContrail networking for an agile, high-performance SDN.
Now, however, Lithium is working hard to evaluate, strategize and transition to a sleeker, container-based model, using Docker and Kubernetes container orchestration and clustering. Containers make sense for Lithium because they enable development, testing and deployment on a single, simple and standardized runtime platform that’s easily and quickly deployed and inherently lightweight: important as the scale and performance requirements of Lithium’s platform continue growing, and as formerly-stateful aspects of their architecture evolve towards stateless microservices.
Kubernetes worked for them for similar reasons: it’s a lightweight platform with familiar, service-oriented internals — providing the features their developers needed to be most efficient, translating to lower development costs. It offered a common scheduler across Lithium’s private and public clouds, letting them build out a more transparently-integrated hybrid solution on multiple IaaSs — Mirantis OpenStack, AWS, and Google Compute Engine. And Kubernetes has been straightforward to deploy on Lithium’s in-house Mirantis OpenStack cloud, eliminating re-engineering effort — easier still, they anticipate, now that Murano enables one-click deployment of Kubernetes clusters with preconfigured container workloads. In their go-forward in-house datacenter, Lithium will be using an upgraded version of their Mirantis OpenStack IaaS, with the OpenContrail SDN providing network support for both infrastructure-layer components, and for Kubernetes Pods, treating each as an isolate networking namespace.
Lithium engineers are working closely with Docker to track trends and refine deployment methodology for their now-microservice-based components — a moving target that Kubernetes’ abstract orchestration can take in stride. And Kubernetes was designed to enable portability across infrastructure solutions: as long as Kubernetes runs on the IaaS, your containers should run on Kubernetes.
Lithium’s proximal goal for Kubernetes is to use it to enable their hybrid infrastructure while providing management of any container on any cloud from a single pane of glass. While container-based networking and storage, they say, are still a bit primitive by comparison with fast-maturing IaaS-level solutions, they’ve identified strategies that should suffice for the time being. Lithium is also committed to contributing back to Kubernetes — that the project is open source, with a welcoming community, was an important Lithium requirement.
Meanwhile Lithium’s Lachlan Evenson, Team Lead for Cloud Platform Engineering, is looking to Mirantis OpenStack to provide important services to Lithium’s evolving hybrid cloud platform architecture. Central, as noted above, is the ability to use Murano to one-click-deploy Kubernetes Pods with preconfigured container workloads. Mirantis’ collaboration with OpenContrail (and Juniper Networks), meanwhile, is paying off as Lithium devises their OpenContrail-based next-gen container-level networking solution, which uses a single SDN for underlying IaaS VMs and containers. Evenson says that being able to re-use the IaaS SDN this way saves huge cycles by comparison with implementing a container-level SDN abstraction using other open source or commercial solutions. Finally, Evenson acknowledges the critical importance of OpenStack’s APIs as a DevOps lingua franca — and wants to explore bringing those APIs up into the Kubernetes/Docker layer to create full-stack DevOps tooling.Lithium and Mirantis will be co-presenting alongside Kubernetes at O’Reilly OSCON, July 20-24 in Portland Oregon. Meet us all there!