Microservices

What are Microservices?

Decomposition patterns

  • Decompose by business capability
  • Decompose by subdomain

Sub Domains

  • Records Management (Document Repository)
  • User Management (Users/Roles/Permissions)
  • Workflow (Customizable Workflow)
  • Master Data Management (Contract/Opportunity etc.)

Steps

  1. Use app credential to get/create/update/remove records instead of user credential in records management
  2. Abstract record entities with relationship with actual records (record unique key and uri)
  3. Abstract master entities relationship with record entities. e.g. Contract, Opportunity.
  4. Create customizable workflow for specific master entity. e.g. specific type of Contract.
  5. Create users with assigned roles (generic for specific type of master entity) and permissions (for specific record)

Architecture Styles

  • Microservices Architecture
  • Event-Driven Architecture

Microservices

Benefits:

  • Agility. Because microservices are deployed independently, it's easier to manage bug fixes and feature releases.
  • Small, focused teams. A microservice should be small enough that a single feature team can build, test, and deploy it. Small team sizes promote greater agility.
  • Small code base. In a monolithic application, there is a tendency over time for code dependencies to become tangled Adding a new feature requires touching code in a lot of places. By not sharing code or data stores, a microservices architecture minimizes dependencies, and that makes it easier to add new features.
  • Mix of technologies. Teams can pick the technology that best fits their service, using a mix of technology stacks as appropriate.
  • Fault isolation. If an individual microservice becomes unavailable, it won't disrupt the entire application, as long as any upstream microservices are designed to handle faults correctly (for example, by implementing circuit breaking).
  • Scalability. Services can be scaled independently, letting you scale out subsystems that require more resources, without scaling out the entire application.
  • Data isolation. It is much easier to perform schema updates, because only a single microservice is affected.

Microservices on AWS

  • Container - Amazon Elastic Container Service (ECS)
  • Serverless - AWS Lambda
  • Other
    • API Gateway pattern - Amazon API Gateway
    • Caching - Amazon ElastiCache Redis
    • Messaging - Amazon Simple Queue Service (SQS)
    • Pub/Sub - Amazon Simple Notification Service (SNS)
    • NoSQL - Amazon DynamoDB

Input -> Lambda -> DynamoDB -> Batch Job -> Database


AWS Microservices

Microservices on AWS

Monolithic vs. Microservices Architecture

Cloud Services

  • Compute

    • Containers

      • Amazon Elastic Container Service (ECS)
    • Serverless
      • AWS Lambda
  • Storage & Databases
    • Caching

      • Amazon ElastiCache
    • Object Storage
      • Amazon S3
    • NoSQL Databases
      • Amazon DynamoDB
    • Relational Databases
      • Amazon RDS
      • Amazon Aurora
  • Networking
    • Service Discovery

      • AWS Cloud Map
    • Service Mesh
      • AWS App Mesh
    • Elastic Load Balancing
      • Application Load Balancer
      • Network Load Balancer
    • API Proxy
      • Amazon API Gateway
    • DNS
      • Amazon Route 53
  • Messaging
    • Message Publishing & Subscription

      • Amazon Simple Notification Service (Amazon SNS)
    • Message Queuing
      • Amazon Simple Queue Service (Amazon SQS)
  • Logging and Monitoring
    • API Monitoring

      • AWS CloudTail
    • Application and Resource Monitoring
      • Amazon CloudWatch
    • Distributed Tracing
      • AWS X-Ray
  • DevOps
    • Container Image Repository

      • Amazon Elastic Container Registry (Amazon ECR)
    • Continuous Delivery
      • AWS Developer Tools

MMR Microservices Expectations

  • Individual compute
  • Individual deployment
  • Scalable
  • Small team
  • Decoupling
  • Free tech selection
  • No impact to existing apps

AWS Microservcies

  • Container
  • Serverless

MMR Integration Patterns

Source Target Method
Upstream App MMR Read
Upstream App MMR Write
MMR Downstream App Read
MMR Downstream App Write

Implementing Microservices on AWS (Web)

Implementing Microservices on AWS (PDF)

AWS Cloud Map service discovery for serverless applications

Guide to Implementing Microservices On AWS [With Examples]

Service connectivity inside and outside the mesh using AWS App Mesh (EC2/Fargate)

Implementing Microservices on AWS

Contents

  • Abstract
  • Introduction
  • Simple Microservices Architecture on AWS
    • User Interface
    • Microservices
    • Data Store
  • Reducing Operational Complexity
    • API Implementation
    • Serverless Microservices
    • Deploying Lambda-Based Applications
  • Distributed Systems Components
    • Service Discovery
    • Distributed Data Management
    • Asynchronous Communication and Lightweight Messaging
    • Distributed Monitoring
    • Chattiness
    • Auditing
  • Conclusion
  • Contributors
  • Document Revisions

There are three common patterns that we observe when our customers build microservices: API driven, event driven, and data streaming.

Microservices architectures are not a completely new approach to software engineering, but rather a combination of various successful and proven concepts such as:

  • Agile software development
  • Service-oriented architectures
  • API-first design
  • Continuous Integration/Continuous Delivery (CI/CD)

SOA, Service Oriented Architecture

XaaS, Everything as a Service

IaaS, Infrastructure as a Service

PaaS, Platform as a Service

SaaS, Software as a Service

Microservices

  • Decoupling of services
  • Data store autonomy
  • Miniaturized development
  • Testing setup
  • Facilitate faster time-to-market

How to choose the right data store for your miceroservices?

  • Performance

    1. Read performance

      operations-per-second

      how fast you can run queries

      how fast you can retrieve results

      how well you organize and index data
    2. Write performance

      operations-per-second
    3. Latency
    4. Resource efficiency
    5. Provisioning efficiency
  • Reliability
  • Data modeling

For read/write operations-per-second

  • Very high — Greater than one million
  • High — Between 500,000 and one million
  • Moderate — Between 10,000 and 500,000
  • Low — Less than 10,000

For latency

  • Low — Less than one millisecond
  • Moderate — one to 10 milliseconds
  • High — Greater than 10 milliseconds

Data Modeling Requirements

Nature of Data

  1. Transient data

  2. Ephemeral data

  3. Operational data

  4. Transactional data

Vendor Service Domain Product Certification Status Current Availability
AWS Database Services ElastiCache -- GA 1.0

[Choosing the Right Database for Microservices Solutions](file:///C:/Users/chikun.cui/Downloads/MMateev-SQLSat823Israel-Choosing-the-Right-Database-for-Microservices-Solutions.pdf)

Effective Microservices: 10 Best Practices

10 Microservices Best Practices for the Optimal Architecture Design

Adopting Microservices at Netflix: Lessons for Architectural Design

Creating Cross Tab Queries and Pivot Tables in SQL

SQL Server Cross Join

Crosstab queries using PIVOT in SQL Server

Use SQL Server to Create a Cross Tab Query

SQL Server Hardware Performance Tuning

How Monitoring Query Performance Can Help You Save SQL Memory Usage

Ten Common Database Design Mistakes

SQL Server database design best practices and tips for DBAs

Best Practice - An Introduction To Domain-Driven Design

martinFowler.com tagged by: domain driven design


AWS Microservices

  • Compute

    • Containers - Amazon Elastic Container Service
    • Serverless - AWS Lambda

Cloud Product Catalog

Vendor Service Domain Product Certification Status Current Availability
AWS Compute Services Elastic Container Service (ECS) Blueprint In Progress 1.0 Not Available
AWS Compute Services Lambda -- GA1.0

Azure Microservices

  • Microservices Approches

    • Service Fabric
    • Azure Kubernetes Service (AKS)
    • Azure Functions
    • API Management

Cloud Product Catalog

Vendor Service Domain Product Certification Status Current Availability
Azure Compute Services Service Fabric Clusters -- Beta 1.0
Azure Compute Services Function Apps -- GA 1.0
Azure Enterprise Integration API Management Services -- GA 1.0

GCP Microservices

  • Google App Engine
  • Google Kubernetes Engine (GKE)

Cloud Product Catalog

Vendor Service Domain Product Certification Status Current Availability
GCP Compute Services Google Kubernetes Engine (GKE) -- GA 2.0
GCP App Services App Engine -- Beta 2.0

MMR Technical Pain Points

  • Performance Issues

    High volume of data updates have impact on MMR performance.
  • Data Gap on Opportunity data

    Opportunity Data in MMR are from Sales ODS with 24 to 48 hours of delay from source application (MMS). If the Opportunity is not yet available in MMR, users would not be able to perform Opportunity submissions.

    Moreover, Sales ODS does not deliver updates for Opportunities that are not active in the current fiscal year. This impacts company code mapping for AIL reports.
  • Security Model

    Security Implementation in MMR is very granular.
  • Vendor Limitations and Product Maintenance

    Requires VM with desktop experience (does not support CORE). App teams need to raise exception requests

    since the vendor does not support cloud native offerings yet.Time to upgrade product version would take 3-6 months.
  • Data Replication

    MMR Data (both metadata and actual documents) are now replicated on other apps like SEAL and ALICE (like everything).

What are microservices?

Microservices - also known as the microservice architecture - is an architectural style that structures an application as a collection of services that are:

  • Highly maintainable and testable
  • Loosely coupled
  • Independently deployable
  • Organized around business capabilities
  • Owned by a small team

The microservice architecture enables the rapid, frequent and reliable delivery of large, complex applications. It also enables an organization to evolve its technology stack.

The pattern language is your guide

The microservice architecture is not a silver bullet. It has several drawbacks. Moreover, when using this architecture there are numerous issues that you must address.

The microservice architecture pattern language is a collection of patterns for applying the microservice architecture. It has two goals:

  1. The pattern language enables you to decide whether microservices are a good fit for your application.
  2. The pattern language enables you to use the microservice architecture successfully.

A good starting point is the Monolithic Architecture pattern, which is the traditional architectural style that is still a good choice for many applications. It does, however, have numerous limitations and issues and so a better choice for large/complex applications is the Microservice architecture pattern.

Avoid the potholes

Thinking of migrating to the microservice architecture? If so, you should look at this presentation about the potholes in the road from monolithic hell and read this series of blog posts about anti-patterns and how to avoid them.

Assess your architecture

If you have built an application with the microservice architecture then take a look at the Microservices Assessment Platform. The platform assesses what you have built and identifies what needs to be improved. It reduce architectural and organizational risk and maximizes the benefits of the microservice architecture.



  1. Key software delivery outcomes
  2. General architecture
  3. Inter-service communication
  4. Deployment and Reliability
  5. Obervability
  6. Externalized configuration
  7. Supporting infrastructure
  8. Libraries and frameworks
  9. Documentation
  10. Organization and process

  1. Key software delivery outcomes
  2. Service design

    A service is an independently deployable, loosely coupled, component with well-defined and focussed responsibilities.

    1. Is the service an independently deployable/executable component?
    2. Does the service implement a business capability?
    3. Does the service have a single responsibility?
    4. Is a service’s datastore private to that service?
    5. Does the service use reliable mechanism, such as sagas, to maintain data consistency across services?
    6. Is the service built using a supported technology stack?
    7. Is the service built using a supported microservice chassis?
  3. Externalized configuration
  4. Inter-service communication

    Services must communicate securely using IPC mechanisms that allow the API to evolve. In addition, a service that uses RPC must use a service discovery mechanism.

    1. Does the service use language neutral communication mechanisms?
    2. Is the service’s API secured?
    3. Do the communication mechanisms support API evolution?
    4. Does the service use service discovery to locate its (REST/RPC) dependencies?
    5. If the application uses client-side registration, Does the service register itself?
  5. Service reliability
  6. Deployment/Release
  7. Observability
  8. Documentation
  9. Automated testing
  10. Organization and process

Microsoft Microservices Architecture

API Gateway

演化路线

1 - 所有容器都在一台机器上使用不同端口利用Nginx映射

2 - 部分容器在单独的机器上,UI使用静态对象

https://github.com/Microsoft/Yams

Microservices的更多相关文章

  1. 微服务(Microservices)—Martin Fowler【翻译】

    本文转载自:http://www.cnblogs.com/liuning8023/p/4493156.html -------------------------------------------- ...

  2. 微服务(Microservices)——Martin Flower【翻译】

    原文是 Martin Flower 于 2014 年 3 月 25 日写的<Microservices>. 本文内容 微服务 微服务风格的特性 组件化(Componentization ) ...

  3. Microservices Reference Architecture - with Spring Boot, Spring Cloud and Netflix OSS--转

    原文地址:https://www.linkedin.com/pulse/microservices-reference-architecture-spring-boot-cloud-anil-alle ...

  4. Using Amazon API Gateway with microservices deployed on Amazon ECS

    One convenient way to run microservices is to deploy them as Docker containers. Docker containers ar ...

  5. Building microservices with Spring Cloud and Netflix OSS, part 2

    In Part 1 we used core components in Spring Cloud and Netflix OSS, i.e. Eureka, Ribbon and Zuul, to ...

  6. Cracking Microservices practices

    微服务最佳实践 英文原文:Cracking Microservices practices 在我还不知道什么叫微服务架构的时候我就使用过它.以前,我写了一些管道程序(pipeline applicat ...

  7. How Microservices are Transforming Python Development

    https://blog.appdynamics.com/engineering/how-microservices-are-transforming-python-development/ Summ ...

  8. Securing Spring Cloud Microservices With OAuth2

    From Zero to OAuth2 in Spring cloud Today I am presenting hours of research about a (apparently) sim ...

  9. How to distribute a database among microservices

    在为相对复杂的企业域构建微服务时,我们需要找到在这个域中不同责任的边界.在每个边界中,我们会创建领域模型,这个模型是针对业务责任所设计的,并反映了这种业务责任.针对每个边界的数据模型会由同一个边界中的 ...

  10. 微服务(Microservices)【翻译】

    微服务 “微服务架构(Microservice Architecture)”一词在过去几年里广泛的传播,它用于描述一种设计应用程序的特别方式,作为一套独立可部署的服务.目前,这种架构方式还没有准确的定 ...

随机推荐

  1. mysql设置定时任务-渐入佳境

    --作者:飞翔的小胖猪 --创建时间:2021年2月26日 前言 mysql中设置定时任务,需要先打开调度才能实现自动执行任务.调度功能开启后过再配合存储过程或事件等组件实现特定或定时的任务实现. 步 ...

  2. Python 中的深浅拷贝

    Python 中的深浅拷贝 参考文献:https://blog.csdn.net/lnotime/article/details/81194633 参考文献:https://blog.csdn.net ...

  3. [ Skill ] 文件读写 & IO 句柄

    https://www.cnblogs.com/yeungchie/ 在 Skill 中使用一种叫做 ioport 类型的变量来操作文件.不过我一般更习惯称为 IO 句柄 (IO/File Handl ...

  4. 组合拳 | 本地文件包含漏洞+TFTP=Getshell

    文章声明 安全文章技术仅供参考,此文所提供的信息为漏洞靶场进行渗透,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作. 本文所提供的工具仅用于学习,禁止用于其他,未经授权,严禁转载,如需转 ...

  5. ARP协议、路由器详细工作原理

    ARP原理分析 第一次通信时,有对方IP地址但是没有目标MAC地址,该PC就会在网络层启动ARP协议生成一个ARP报文"我叫1.1,我的MAC是AA;谁是1.3,你的MAC是多少?" ...

  6. 使用PostgreSQL 脚本导出数据库的DDL

    使用PostgreSQL 脚本导出数据库的DDL 本文主要介绍如何使用基于 PostgreSQL pgdump编写的自定义脚本来导出数据库的DDL. 一.文件说明: 1.pgdump基础语句.sql: ...

  7. Excel用Power Query把文件夹下所有文件合并为一个与合并多个表格

    Excel用Power Query把文件夹下所有文件合并为一个与合并多个表格 在 Excel Power Query 未出来之前,把文件夹下所有文件合并为一个与合并同一工作表中的多个工作表,需要用 V ...

  8. 软件工程homework-004

    软件工程软件工程homework-004 博客信息 沈阳航空航天大学计算机学院2020软件工程作业 作业要求 https://edu.cnblogs.com/campus/sau/Computer17 ...

  9. ffmpeg修改视频文件的分辨率

    在本文中,我们将展示如何调整任何视频文件的大小. 这种方法是在Linux系统(几乎任何发行版)中调整视频文件大小的最佳方法之一,也是Windows和Mac用户的绝佳替代方案. 更改视频文件的分辨率将是 ...

  10. kafka 第一次小整理(草稿篇)————整理一下自己的认知

    前言 简单整理一些自己使用kafka的一些感受. 正文 一切都要回到真实的世界上, 计算机世界只是真实事件的一个缩影. 计算机世界有一个重要的东西,那就是数据库. 数据库记录着真实世界发生了什么,准确 ...