by Eric Rong, Technical Architect, Business IT, VMware
Automating and encapsulating the application development process into a cloud-native environment can dramatically improve development and operational efficiencies. This includes removing as many hurdles as possible so that developers can focus on where they add the most value–the business logic and data.
A top priority for VMware IT was to find a cloud-native platform that automated our application development operations and gave developers more time to code and test. In this blog, I will provide greater insights into our cloud-native technology and framework adoption and its impact on our developer community.
Abstraction/Automation is Key
The VMware IT environment is based on providing layers of abstraction so that our application development environments perform the same way, regardless of which cloud they are running in. This approach complements the VMware cloud architecture, which embraces both public and private clouds as utilities. Infrastructure can be quickly provisioned, auto-scale, and self-heal, with little, if any, awareness by the application development team.
To support a true cloud-native environment, our IT operations required out-of-the-box abstraction and automation in four main areas:
- Day 1 and day 2 operations such as provisioning, backup, patching, and upgrading, so we could guarantee consistent operational safety and efficiency and developers could focus on delivering an application, not the operations around it.
- Persistent data services such as the database, cache, and messaging broker, etc., so developers could secure the services they needed without fighting the infrastructure team or worrying about the operation of those services.
- Observability of features such as monitoring, logging, and tracking, so developers could easily access information for troubleshooting.
- Release pipelines, so developers could focus on delivering business value using the shortest path between code to production.
Any technology platform we adopted had to meet these requirements to be considered.
We selected Pivotal Application Services (PAS) (formerly Pivotal Cloud Foundry) and Pivotal Container Services (PKS) as the cornerstones of our cloud-native platform because of their product maturity, feature sets and the breadth and depth of services. The products solved our #1 issue out-of-the-box—abstracting and automating the operations needed to run an application development platform to give developers more time to code.
PAS is an opinionated app dev platform, with a rigorous process that must be followed to get the most benefits. Like any large IT shop, not all application development fits into an opinionated model. For these cases, we provide PKS or Kubernetes as an alternative. We cater to the different levels of maturity of developers and teams. For example, PAS is ideal for applications like stateless cloud native apps and microservices, etc. Other teams choose PKS because they require the flexibility of containers to develop apps such as stateful clusters, content management systems, etc.
By having centrally managed persistent data services across two deployment options—PAS and PKS–developers are free to choose the option that works best for their project. We also rely on vSAN and NSX-T for storage and networking respectively across both platforms. A central, self-service app dev portal gives developers one-stop shopping for resources. (Read more about the dev portal in this blog.)
To complement our platform and simplify the adoption of cloud-native architecture, we chose Spring Boot, an open source, Java-based, cloud native app framework, for microservices. It allows developers to work in a cloud-native environment with minimum overhead. The advantage is that the development scaffolding is taken care of by the framework and developers can focus on the business logic. Spring Stack makes the application expandable in a cloud-native fashion, eliminating the need for developers to reinvent operations all over again.
One of the biggest benefits of Spring Boot is its ability to operate independently of any platform. Code can run on VMs, Docker, Kubernetes, and it doesn’t matter. This protects our investment as we deploy different platforms over time.
By adopting an integrated application development platform based on Spring Boot, IT both supports the use of best practices across our cloud environment and automates the tedious aspects of software development. Developers can focus on business logic and data, the areas where they add the most value.
The VMware IT cloud-native architecture strategy is a work in progress. The next step in the IT roadmap includes adding more persistent data services support and Function-as-A-Service (FAAS). FAAS breaks down the application into reusable functions so the platform can be wired up with the services needed to fulfill business requirements. This, in turn, provides even better infrastructure utilization, code reusability, and deployment flexibility.
The IT roadmap still holds many unknowns as we continue to seek operational efficiency. Which organizational structure–vertically integrated teams or decentralized tag teams—best supports this evolution? What role will persistent data services (e.g. Kafka, MongoDB, object storage services) play and where should we run them? How do we maintain platform stability while still fostering innovation? These are just some of the areas we’re exploring to help our developers work as simply and efficiently as possible.
To learn more, attend VMworld 2018 session CNA1232, Have Your Cake and Eat It: VMware IT Adoption of PKS.
VMware on VMware blogs are written by IT subject matter experts sharing stories about IT’s transformation journey using VMware products and services in a global production environment. Visit our portal to learn more or follow us on Twitter: @VMWonVMW.