5 steps to building a microservices foundation
- By Jim Tyrrell
- May 06, 2015
Microservices -- small pieces of software that do one thing, and do it well -- are a hot topic in the context of software delivery and development, especially among government IT professionals. That’s because microservices can be a godsend for agencies seeking greater agility and accelerated service delivery.
Microservice architecture describes “a particular way of designing software applications as suites of independently deployable services,” according to Martin Fowler, who has written a thorough introduction on the subject. Microservices, he explained, are typically are organized around “business capability, automated deployment, intelligence in the endpoints and decentralized control of languages and data.”
Consider, for example, a government website that has its different sections fed by separate application programming interfaces. Each API can be managed through a microservice, which can make it much easier to control content and security for that site.
Getting there, however, requires government IT administrators to re-examine their traditional enterprise architectures. The ecosystem of available open source projects, methodologies, products and more that make up IT infrastructures -- and the artifacts used in delivering software applications -- can leave heads spinning. Bringing this ecosystem together to address unique needs, if done carefully, can result in a platform for significantly accelerated software delivery. The trick is getting it right.
Existing platforms are generally typified by traditional IT approaches -- what research firm Gartner calls mode-1 -- that emphasize scalability, efficiency, safety and accuracy. These traditional platforms are very important, as they run day-to-day operations and provide IT services across an agency, from field personnel, to office administrators to citizen-customers. However, they can also be saddled with technical debt.
Standardizing on ecosystems and platforms that free up resources and correct failed workloads can serve as the foundation for microservices. Here are a few ways federal IT administrators can build that foundation:
1. Set up and empower small, agile groups. Then encourage the groups to experiment – they should fail fast so they can succeed sooner. Quick failures lead to better understanding and problem solving, which can lead to great things. Teams should be encouraged to try things out, see how they work and then pivot as required with the new-found knowledge. Managers should get the CIO and other leadership on board early, because successfully empowering teams and enabling change will require their backing and support.
2. Think about continuous integration. CI is partly derived and implemented with ideas from agile methodologies like test-driven development, which requires that test cases for the eventually delivered functionality be created before any application code is written. This allows agencies to build automation that can run all test cases against code commits or updates. Developers become empowered by being able to more easily experiment in the code base, because a report can be easily generated around the numbers of errors introduced.
3. Then try continuous deployment. Once the code base’s health has been determined, agency IT professionals can start thinking about CD, which revolves around the notion that code is being continually pushed into production. CD also eliminates the cost of change; because code delivery is automated, pushing changes into production is ongoing, not just reserved for special maintenance windows. Even just one code push a day can drastically increase agility.
4. Consider platform-as-a-service. PaaS provides consistent runtimes and developer self-service for quickly provisioning instances for use. With PaaS, developer environments no longer require a month-long fulfillment. Using tools like Jenkins provides for build automation, CI and CD, and monitoring tools gives IT managers global insight into their operational environments and lets them identify trends or issues before they become outages.
5. Introduce some chaos into the environment. System failures are bad, but they can also help organizations become more resilient. Therefore, IT professionals may want to introduce some chaos into their environments via tools like Netflix’s Chaos Monkey and its derivative projects. These projects help detect and rectify potential failures and can greatly increase system reliability.
These processes form the foundation for microservices. It’s a foundation built on going small and agile, and supporting that effort with technologies that allow organizations to react quickly and roll out new services continually. It’s also the perfect environment for today’s government agencies, where agile has become not only a word to describe movements on a battlefield, but the IT efforts that make those movements possible.
Jim Tyrrell is a principal JBoss solutions architect, Public Sector, Red Hat.