While the number of technologies expands as fast as new business opportunities, organizations are still struggling to quickly translate their business requirements into actionable applications. There are many reasons for this, including a lock-in they might have with a few technologies, the constant need for legacy application maintenance, and the way the organization is structured and manages its projects. Application initiatives—such as for a web and mobile presence—and implementation of key business processes across a variety of channels, are enough to justify a big team, a big architecture, and so forth. Increasing numbers of organizations that seek to achieve the goals of these initiatives (and more) are looking at an approach that’s on the other end of the spectrum: micro services.
What Are Micro Services?
Micro services architecture applies principles that have existed for a long time in UNIX, while also building on a dozen years of successes and failures of service oriented architecture. Micro services architecture remains the topic of many debates with regard to definitions. The goal is to provide services that encapsulate a single business functionality and that comply with requirements, including the following:
- The service can be changed or updated at any time without impact on other services or even an application. This includes when the service needs to scale; it should not require a complete application to scale, or even a set of hardware resources.
- The services have a RESTful interface and communicate via http or messaging. In general, the goal is to use dumb pipes but manage smart endpoints within the services. Any service can also have some sort of data storage.
- The services can be implemented in any technology. This lets the organization choose the right technology for the job in the moment, instead of having to stick to a small number of “approved” technologies that may be less suitable. This also allows organizations to manage the skills of their developers or the developers they choose to use.
- The services are managed independently as products rather than just components. The teams responsible for these services are typically involved in more than just development. For example, having teams manage operations should help increase the quality of development.
Benefits of Micro Services
There are many benefits for organizations successfully implementing micro services.
- Flexibility is improved with a faster response to new or changing business requirements. This comes from faster development of new applications (and the services to support them), as well as faster deployment and application updates.
- Quality of applications is improved because unstable services can easily be replaced or upgraded faster than a monolithic application. Micro services that manage their product are also directly accountable for the quality of the service, from development to operations. Finally, the ability to use the right technology for the job ensures developers focus on the purpose of the service instead of “bending” a technology to make it applicable.
- The cost of creating applications and services is reduced, thanks to fewer required resources to maintain services, the ability to scale development teams, and, of course, the reusability of services.
- Organizations are free to innovate faster since developers can create new services much quicker, even without the need of a higher-level monolithic application. These new services can also be onboarded easily by applications.
At the same time, while the possible variety of technologies used to create micro services is a key value driver, it also creates new problems that were less obvious with monolithic applications or a limited set of technologies.
- All of these services require integration and recreating integration capabilities in various languages might not be the best use of developers’ time. To stay true to the principles of micro services, the point here is not to centralize integration on one platform, which would become the smallest common denominator of the micro services architecture. Integration technologies can be used in many ways within these services. First, they can act as a facade of the services, providing a ready-to-use RESTful endpoint complete with logging, exception management, and configuration. Secondly, it can expose as services the resources that micro services need from other applications. Finally, it can also be used to create the service with orchestration logic (combining data from various sources while applying logic but remaining stateless) or even choreography (allowing the service to have “conversations” with other services).
- All of these services and technologies require automation of deployment and configuration. The flexibility promised by micro services does not apply only to development services. The continuous delivery of deployment of services must be matched with a configuration that often applies to multiple technologies. Using one interface to automate and enforce policies for scalability or high availability greatly streamlines the management of micro services architecture.
- All of these services require logging and monitoring. As applications are now based on multiple services, exceptions need to be caught and understood immediately for the problem to be fixed without further impact. This type of visibility will improve the quality of operations, reduce exception costs, and help improve the application’s end user experience.
- All of these services require hybrid deployment. Micro services provide great modularity to scale efficiently, as well as seamlessly onboard new services. Leveraging cloud resources generates even more value since they do not require the same kind of investment as on-premises resources. The challenge is once again combining various technologies with different types of resources, which creates a complexity that will impact the ability of the organization to react when applications need to scale or new services need to be provided quickly, diminishing the potential value to be yielded from using cloud resources.
A solution to these challenges can be found in the principles of micro services: Use the right technology for the job. Proven technologies can be used across the micro services architecture to ensure the scalability and high availability is matched with the speed of development and deployment. These technologies do not prevent organizations from using any other technologies to create their micro services.
- TIBCO ActiveMatrix BusinessWorks provides all the integration capabilities required by micro services, developed rapidly thanks to a standard and intuitive IDE, while allowing deployments where the micro services need it.
- TIBCO SilverFabric provides a PaaS framework that allows automation of the delivery, configuration, and monitoring of services developed in multiple technologies, and deployed on hardware, virtual, and cloud resources. Silver Fabric allows teams to manage services as one coherent set, and define configurations and policies for high availability and scalability that are applied across all the technologies used.
When the flexibility of micro services meets the robustness of these technologies, organizations are finally in a position to think big and act micro.