Microservices has taken off as a new approach for building applications that accommodates the highly agile pace of product and service evolution in the digital age. For businesses still bewildered by the term and its implications, there are a few important aspects of this approach that should be digested before rushing to implement it.
- API-centricity. Architecturally, microservices interact with published or previously agreed-on APIs that are maintained in a stable fashion. The APIs may evolve over time and be versioned, but they do so in an orderly fashion and with ample communication to service users. APIs are becoming an integral part of enterprise digital transformation by connecting internal businesses across the ecosystem.
- Team autonomy. Organizationally, the key to the effectiveness of microservices is that they are built and maintained by small teams as independent services. The independence can be manifested by the team’s autonomy in selecting development tools, programming languages, and/or an internal service architecture that may be different from other services in the overall system. Discrete teams have proven to be more efficient and effective in building and maintaining applications.
- Composable and extensible. Microservices are inherently compositional and extensible through their APIs. Thus a system may be conceived to consist of a number of services, but it may also be continually extended with the additional of new services over time.
- Automation. Although microservices architecture is distinct from the set of technologies that might support it, the advancement in software development methodologies and tools has played a key role in putting microservices architecture where it is today. Thus, a high degree of automation (CI/CD, application monitoring, etc.) is essential at every stage of the software development and deployment process in any component service of a microservices architecture.
- Cloud agility. While many early adopters of microservices were involved in public cloud deployments, microservices can also be implemented in private clouds. However, true agility in microservices is reached within the precepts of cloud architecture, such as self-service-based and API-managed development and deployment resources, elastic scaling, and abstraction from hardware and operating system management layers. Thus PaaS platforms and container-based services are increasingly the preferred approaches to deploy microservices on or off premises. Workloads in the cloud are easier to monitor, and they are more measurable, manageable, and elastically stackable.
- DevOps. Due to the small and independent nature of team accountability in a microservices approach, implementing DevOps practices is essentially the only effective approach. Service teams must be willing to undertake end-to-end developmental and operational tasks and responsibilities. For many organizations, the most effective and most prevalent approach to adopting DevOps practices is to implement a microservices architecture.
- Need for skills. Microservices may demand a more sophisticated level of developer and operator skills. The very autonomy and responsibility provided to small service teams implies that a significant set of complementary skills must exist within the team. In addition to a strong collaboration ethic, microservices developers are expected to have an above-average competency in selecting and integrating open source software and a strong awareness of available frameworks and tools that will help them do their job efficiently. For this reason, the overall industry competency with microservices is expected to evolve gradually but not explosively.
Microservices is not a specific programming language, framework, or technology. Rather, it is an organizational and cultural approach to building software combined with an architectural pattern of structuring and distributing a software system across networks. The microservices approach allows a much higher pace of software evolution and business agility if applied to the right product or system, but businesses need to understand the demanding conditions that must be fostered to support an effective microservices environment.
As AI becomes more prevalent, Teaching Machines Right from Wrong gets more important.