COURSE : CLOUD MICROSERVICES | ONLINE TRAINING | DURATION : 30 HOURS
Microservices (or microservices architecture) are a cloud native architectural approach in which a single application is composed of many loosely coupled and independently deployable smaller components, or services. These services typically
- have their own stack, inclusive of the database and data model;
- communicate with one another over a combination of REST APIs, event streaming, and message brokers; and
- are organized by business capability, with the line separating services often referred to as a bounded context.
While much of the discussion about microservices has revolved around architectural definitions and characteristics, their value can be more commonly understood through fairly simple business and organizational benefits:
- Code can be updated more easily.
- Teams can use different stacks for different components.
- Components can be scaled independently of one another, reducing the waste and cost associated with having to scale entire applications because a single feature might be facing too much load.
Microservices might also be understood by what they are not. The two comparisons drawn most frequently with microservices architecture are monolithic architecture and service-oriented architecture (SOA).
The difference between microservices and monolithic architecture is that microservices compose a single application from many smaller, loosely coupled services as opposed to the monolithic approach of a large, tightly coupled application.
The differences between microservices and SOA can be a bit less clear. While technical contrasts can be drawn between microservices and SOA, especially around the role of the enterprise service bus (ESB), it’s easier to consider the difference as one of scope. SOA was an enterprise-wide effort to standardize the way all services talk to and integrate with each other, whereas microservices architecture is application-specific.
Right tool for the job
In traditional n-tier architecture patterns, an application typically shares a common stack, with a large, relational database supporting the entire application. This approach has several obvious drawbacks—the most significant of which is that every component of an application must share a common stack, data model, and database, even if there is a clear, better tool for the job for certain elements. It makes for bad architecture, and it’s frustrating for developers who are constantly aware that a better, more efficient way to build these components is available.
By contrast, in a microservices model, components are deployed independently and communicate over some combination of REST, event streaming, and message brokers—so it’s possible for the stack of every individual service to be optimized for that service. Technology changes all the time, and an application composed of multiple, smaller services is much easier and less expensive to evolve with more desirable technology as it becomes available.
Evolution of Microservices
- Monolithic Architecture
- Distributed Architecture
- Service oriented Architecture
- Microservice and API Ecosystem
- Microservices in nutshell
- Point of considerations
- SOA vs. Microservice
- Microservice & API
- REST Architecture principles
- Microservice Characteristics
- Inter-Process Communications
- Microservice Transaction Management
- Domain Driven Design
- Big Mud Ball to Sweet Gems
- Untangling the Ball of MUD
- Kill the MUD Ball growth
- Decouple the User interface and Backend Business Logic
- MUD Ball to Services
- Microservice Design Patterns
- Microservice Architecture Decisions
- Why is Security important?
- Microservice Security Principles
- Microservice Security techniques
- Access Tokens
- Oauth 2.0
- How to secure a Microservice using OAuth 2.0
- Testing scenarios and strategy
- Test at Different Levels
- Testing Best Practice for Microservices