Book Image

Embracing Microservices Design

By : Ovais Mehboob Ahmed Khan, Nabil Siddiqui, Timothy Oleson
Book Image

Embracing Microservices Design

By: Ovais Mehboob Ahmed Khan, Nabil Siddiqui, Timothy Oleson

Overview of this book

Microservices have been widely adopted for designing distributed enterprise apps that are flexible, robust, and fine-grained into services that are independent of each other. There has been a paradigm shift where organizations are now either building new apps on microservices or transforming existing monolithic apps into microservices-based architecture. This book explores the importance of anti-patterns and the need to address flaws in them with alternative practices and patterns. You'll identify common mistakes caused by a lack of understanding when implementing microservices and cover topics such as organizational readiness to adopt microservices, domain-driven design, and resiliency and scalability of microservices. The book further demonstrates the anti-patterns involved in re-platforming brownfield apps and designing distributed data architecture. You’ll also focus on how to avoid communication and deployment pitfalls and understand cross-cutting concerns such as logging, monitoring, and security. Finally, you’ll explore testing pitfalls and establish a framework to address isolation, autonomy, and standardization. By the end of this book, you'll have understood critical mistakes to avoid while building microservices and the right practices to adopt early in the product life cycle to ensure the success of a microservices initiative.
Table of Contents (16 chapters)
1
Section 1: Overview of Microservices, Design, and Architecture Pitfalls
6
Section 2: Overview of Data Design Pitfalls, Communication, and Cross-Cutting Concerns
10
Section 3: Testing Pitfalls and Evaluating Microservices Architecture

Reviewing leadership responsibilities

In this section, we will understand the responsibilities associated with different roles in an organization looking to adopt the culture of continuous delivery of value.

What business/technology leaders must know

Any organization's business leaders must define and communicate the vision of the organization and focus on the necessary grassroot transformation. They must identify growth opportunities, market trends, competition, and address potential risks to create an environment that fuels innovation by bringing new business models to life. Innovation that's driven by a feedback loop creates a culture where new ideas are heard, designed, iterated, and refined. They should focus on value creation through active learning, gaining insights, and experimentation. As business values change over time, this demands a change in business priorities, which should be clearly defined and communicated across the organization so they can be used as the guiding principle to make future decisions.

Technology leaders are responsible for articulating the technology strategy and driving technology initiatives across the organization. They are also responsible for building capabilities by investing in people, processes, products, services, platforms, and acquiring business acumen to deliver a competitive edge in a cost-effective manner for customer delight. Technology leaders play an important role in leading the evolution of business systems, understanding the challenges, and building capabilities to continuously innovate. They should also look outside their organization and find opportunities for collaboration with teams to ideate and innovate. Furthermore, they ensure service quality by implementing process improvement models with the help of widely adopted frameworks to help deliver high-quality services, addressing a vast majority of customers. CMMI, GEIT, and ITIL are a few of the frameworks that can help in adopting practices around service delivery, development, governance, and operation. The adoption of these frameworks and their practices varies widely in the industry. Smaller organizations can start small and focus on a few of the relevant practices, while the enterprises that may want to achieve a certain level of maturity can explore the entire model.

What architects must know

The role of an architect is to understand the need for changing business drivers and technology and their impact on software architecture. They work closely with the business stakeholders to identify new requirements and formulate plans to accommodate those changes to drive business value. As change is the only constant, an architect should embrace the architectural modularity of software systems to be evolved in isolation. They need to align architecture decisions (trade-offs) with the business priorities and understand their impact on business systems. The architect should demonstrate leadership, mentorship, and coaching across teams to facilitate change. They have the responsibility of enabling software teams by providing the necessary learning opportunities to acquire the necessary skills to deliver effectively. These learning opportunities are not only limited to technology training and certifications, but special emphasis should be placed on understanding business systems, business domains, and change management. When it comes to agile teams, the role of an architect is usually played by the senior engineers or the development managers.

In practice, it's essential to understand both the business domain and data. These architects should collaborate with business users to understand the business outcomes and emphasize domain-driven design. They should also analyze how different parts of the application are consuming different datasets, to remodel them as microservices. Understanding the usage patterns of the data allows us to either build or choose the right services that support business needs.

The role of the product manager, product owner, and scrum master

Product managers are responsible for crafting the vision of a product by understanding customer needs, business objectives, and the market. They sit at the intersection of business, technology, and user experience, while the product owners work closely with the stakeholders to curate detailed business requirements for the product or feature. They are responsible for translating the product manager's vision into actionable items to help cross-functional teams build the right product. The scrum master is the coach that acts as a mediator between the development team and product owner to ensure that the development team is working in alignment with the product backlog. They foster an environment of high performance and continuous improvement across the team.

So far, we have learned about the role of leadership in shaping the culture to adopt change. Next, we will discuss the importance of setting priorities before starting the microservices journey. Leadership should keep revisiting these priorities to ensure their alignment with business objectives.