Microservices Architecture a Practitioners View
Micro-services Architecture High Level View

Microservices Architecture a Practitioners View

Abstract

Today’s technological era requires the business to change rapidly, transform and beat the competition. In order to flourish in a competitive market which is constantly changing, business needs to create new and enhance the existing consumer experiences in various engagement models. This is feasible only if the IT team builds digital assets in the form of core business capabilities that can bring real value to the business and become enabler of the strategic goals of your business.
A business having a digital footprint, irrespective of a domain they cater to must know how they can improvise end user experience. As customer demands are ever changing, IT needs to deliver solutions that can be adapted to deliver a complete/uniform experience across all channels. In other words, enterprises are becoming composable and microservice architecture has a pivotal role to play. Microservices that expand core business capabilities and adhere to the design principles and architecture goals; becomes true digital assets, which intern leading to a great end user experience. 

What is Microservice Architecture

Microservices architecture helps business requirements to be conducted in a more agile manner; the business transactions are automated with the help of microservices. When existing processes change, or new ones evolve, IT can respond by rewiring the services into new compositions quickly. IT can deliver solution at much faster pace with the help of independent implementation approach by standardizing microservices contracts in the form of API’s. Teams from different line of businesses can implement these microservices with their own choice of technology and remain aligned with their objective. This represents the evolving role of IT from provider to partner, resulting in the enablement of teams from different lines of business to adapt to their own specific needs to build the core capabilities.

Why do we need Microservice Architecture?

Building an adaptable, strategic business capability is far better than building a tactical point to point integration, and therefore IT must do all that it takes to deliver digital assets that are accessible through API invocation and event-based subscription, and that can quickly deliver value to the business in every meaningful context. Microservices are in line with the concept of an autonomous service which represents a typical design with enough abstraction to hide the underlying system of records or core systems. Underlying business processes are accessed via composable API which in turn are implemented through microservices e.g., business entity capabilities such as Order or Payment are exposed through composable API, which in turn invoke specific interoperable microservices to place the order or generate invoices against the payments. 

Key Tenets of Microservices Architecture / Design consideration

Infrastructure Unaware

  •  Stateless and independent microservices with high rate of disposability (through deployment automation)
  •  Infrastructure unaware by cloud native implementation and cloud foundry compliance
  •  Resilient architecture that enables use of private, public or hybrid cloud infrastructure

Domain Services

  • Transaction and/or domain aligned microservice clusters (X+Y-Axis Scaling)
  •  Use component level container deployment for horizontal scaling on seasonal/other demand patterns
  • Domain specific services helps better alignment to business needs

Control

  • Context Aware event driven services provide improved System Level Control
  • Fault-detection sensor across system
  • Independent and autonomous fault-tolerant application

Event Driven

  • Adhere to Event Sourcing and CQRS (Command, Query, Separation of Responsibility) principles
  •  Update any service anytime independently
  • Publish-Subscribe pattern for on demand plug and play services

Resilient

  • Independent and autonomous micro-services for fault-tolerant, resilient and high availability (HA) application
  • Telemetry using proactive monitoring of logs

Agility

  •  Dev and Test Automation for high throughput and scalable agile (SAFe) model
  •  High product quality within continuous integration and testing
  •  Reduced risks and faster ROI

 Implementing Microservices architecture

It is important how you implement microservices based architecture- it must be discoverable, secured and monitored. Microservices should not be reduced to simple CRUD (Create, Read, Update, Delete) service and should have encapsulation within itself to cater to the business requirements. Microservices are best developed when team is small and co-located and comprises of domain experts to give it a flavor of the domain it caters to. Ownership of microservice includes everything from design, deployment to life cycle management and is managed for whole life time by the team which develops it. and it consist of following key components.

API Gateway layer

  • Single-entry point to all the consumers for inbound requests and single dispatch point for outbound requests.
  • Common component for security policies, logging and auditing of events, and notifications
  • ·  Protocol agnostic component for internal gateway and service layer.
  • Manages the service versioning and end points

Edge Router 

  • · End point agnostic component for the service layer
  •     Proxy gateway for the service layer
  •  Protocol agnostic component for service layer for REST based protocols
  •     Service Layer (microservices platform) is a core where microservices contains the rules, logic to interact with the data center

Service Tracing

  • Distributed tracing system helps gather timing data needed to troubleshoot latency issues in microservice architectures.

Service Discovery & Registry

  • For cloud native architecture, it plays a very important role as it allows other services to call existing service without hardcoding of URLs/port number, help in load balancing, multi-instance creation and auto scaling.

Metrics Collection

  • While building a production grade microservices environments, it is essential to have a capability that can help collect metrics such as health status, JVM usage, memory metrics, logger levels, service dashboards

Logging & Monitoring

  • A robust logging and monitoring system to store logging details at all key points.

Event Sourcing System

  • Event sourcing systems such as Kafka for brokering and streaming capabilities.

When to adopt Microservices Architecture

Microservices architecture is not a panacea to solve all the IT, architectural and enterprise issues. However, it should be evaluated carefully before adoption and one must think of following key consideration before adopting, applying microservices based architecture:

  •     If you are looking to enable/deploy service/components independently
  • Having a product mindset and looking to build business capabilities
  •  Inclined to adopt RESTful API’s
  •  Exclusive data management
  •   Automated infrastructure, deployment management
  •  Building/Designing application for failure
  • Looking to decompose monolith applications
  • Fault Isolation and tolerance
  •   Avoid vendor lock-in and moving away from OEM products

Conclusion

As Microservices architecture adoption is on the rise and organizations are trying to move away from the monolithic application architectures, developers and architects must perform due diligence of the use cases. These are the cases where they are trying to apply microservices architecture as it also adds complexity to distributed transaction management, latency, testing and deployment of these services, at the same time it also solves the need of digital savvy customers where organizations need to increase the digital foot print by bridging the gap between various SaaS platforms, 3rd party systems, cloud and on-premise systems.

About Author

Amit Arora

Digital Transformation Architect

Amit comes with 16 years of diverse experience in the enterprise & cloud integration in context of enterprise architecture, solution design and service implementation, cloud migrations and hybrid integration architecture and digital transformations

要查看或添加评论,请登录

社区洞察

其他会员也浏览了