Microservices What, Why? ( 마이크로서비스를꼭써야하나 )

Similar documents
Nevin Dong 董乃文 Principle Technical Evangelist Microsoft Cooperation

Real-life technical decision points in using cloud & container technology:

Industry-leading Application PaaS Platform

High Availability Distributed (Micro-)services. Clemens Vasters Microsoft

70-532: Developing Microsoft Azure Solutions

BUILDING MICROSERVICES ON AZURE. ~ Vaibhav

Hi! NET Developer Group Braunschweig!

70-532: Developing Microsoft Azure Solutions

Kontejneri u Azureu uz pomoć Kubernetesa što i kako? Tomislav Tipurić Partner Technology Strategist Microsoft

Cloud I - Introduction

Architecting Microsoft Azure Solutions (proposed exam 535)

There is no such thing as a microservice!

Developing Microsoft Azure Solutions: Course Agenda

Course Outline. Lesson 2, Azure Portals, describes the two current portals that are available for managing Azure subscriptions and services.

Windows Azure Services - At Different Levels

#techsummitch

Course Outline. Developing Microsoft Azure Solutions Course 20532C: 4 days Instructor Led

To Kill a Monolith: Slaying the Demons of a Monolith with Node.js Microservices on CloudFoundry. Tony Erwin,

Containers, Serverless and Functions in a nutshell. Eugene Fedorenko

Let s say that hosting a cloudbased application is like car ownership

Logging, Monitoring, and Alerting

WHITEPAPER. Embracing Containers & Microservices for future-proof application modernization

COMP6511A: Large-Scale Distributed Systems. Windows Azure. Lin Gu. Hong Kong University of Science and Technology Spring, 2014

API, DEVOPS & MICROSERVICES

CLUSTERING HIVEMQ. Building highly available, horizontally scalable MQTT Broker Clusters

Azure Development Course

Developing Microsoft Azure Solutions (70-532) Syllabus

Reactive Microservices Architecture on AWS

Course Outline. Introduction to Azure for Developers Course 10978A: 5 days Instructor Led

Azure Webinar. Resilient Solutions March Sander van den Hoven Principal Technical Evangelist Microsoft

Developing Microsoft Azure Solutions (MS 20532)

Developing Microsoft Azure Solutions

Developing Microsoft Azure Solutions

How to Keep UP Through Digital Transformation with Next-Generation App Development

Running MarkLogic in Containers (Both Docker and Kubernetes)

App Service Overview. Rand Pagels Azure Technical Specialist - Application Development US Great Lakes Region

Docker and Oracle Everything You Wanted To Know

Techno Expert Solutions

STREAMLINED CERTIFICATION PATHS

Microsoft Azure Stack Hybrid Cloud. The Modern System Architecture

STATE OF MODERN APPLICATIONS IN THE CLOUD

Microservice Powered Orchestration

Pasiruoškite ateičiai: modernus duomenų centras. Laurynas Dovydaitis Microsoft Azure MVP

Developing Microsoft Azure Solutions

20532D: Developing Microsoft Azure Solutions

70-487: Developing Windows Azure and Web Services

Overview SENTINET 3.1

Modern App Architecture

Azure Certification BootCamp for Exam (Developer)

@joerg_schad Nightmares of a Container Orchestration System

Exam : Implementing Microsoft Azure Infrastructure Solutions

When (and how) to move applications from VMware to Cisco Metacloud

How to re-invent your IT Architecture. André Christ, Co-CEO LeanIX

Top five Docker performance tips

IBM Planning Analytics Workspace Local Distributed Soufiane Azizi. IBM Planning Analytics

Microservices mit Java, Spring Boot & Spring Cloud. Eberhard Wolff

利用 Mesos 打造高延展性 Container 環境. Frank, Microsoft MTC

Delivering Microservices Securely and at Scale with NGINX in Red Hat OpenShift. November, 2017

Installation Guide for Kony Fabric Containers Solution On-Premises

WHITE PAPER. RedHat OpenShift Container Platform. Benefits: Abstract. 1.1 Introduction

Azure File Sync. Webinaari

Implementing the Twelve-Factor App Methodology for Developing Cloud- Native Applications

Build an open hybrid cloud and paint it red and blue

Scaling ColdFusion. Presenter Mike Collins, Sr. ColdFusion Consultant - SupportObjective

BraindumpsQA. IT Exam Study materials / Braindumps

Kuber-what?! Learn about Kubernetes

How to Put Your AF Server into a Container

The Post-Cloud. Where Google, DevOps, and Docker Converge

A Generic Microservice Architecture for Environmental Data Management

@unterstein #bedcon. Operating microservices with Apache Mesos and DC/OS

Introduction to Windows Azure Cloud Computing Futures Group, Microsoft Research Roger Barga, Jared Jackson, Nelson Araujo, Dennis Gannon, Wei Lu, and

Connect and Transform Your Digital Business with IBM

[Docker] Containerization

Using the SDACK Architecture to Build a Big Data Product. Yu-hsin Yeh (Evans Ye) Apache Big Data NA 2016 Vancouver

Developing Microsoft Azure Solutions (70-532) Syllabus

Design and Architecture. Derek Collison

Cloud & container monitoring , Lars Michelsen Check_MK Conference #4

OpenShift 3 Technical Architecture. Clayton Coleman, Dan McPherson Lead Engineers

SQL Azure. Abhay Parekh Microsoft Corporation

Think Small: API Architecture For The Enterprise

Gladinet Cloud Enterprise

Lessons Learned: Deploying Microservices Software Product in Customer Environments Mark Galpin, Solution Architect, JFrog, Inc.

August, HPE Propel Microservices & Jumpstart

Microservices at Netflix Scale. First Principles, Tradeoffs, Lessons Learned Ruslan

Open Cloud Engine - An Open Source Cloud Native Transformer

MSB to Support for Carrier Grade ONAP Microservice Architecture. Huabing Zhao, PTL of MSB Project, ZTE

Microservices Beyond the Hype. SATURN San Diego May 3, 2016 Paulo Merson

STREAMLINED CERTIFICATION PATHS

YOUR APPLICATION S JOURNEY TO THE CLOUD. What s the best way to get cloud native capabilities for your existing applications?

Container in Production : Openshift 구축사례로 이해하는 PaaS. Jongjin Lim Specialist Solution Architect, AppDev

Disclaimer This presentation may contain product features that are currently under development. This overview of new technology represents no commitme

Deploying and Operating Cloud Native.NET apps

RED HAT OPENSHIFT A FOUNDATION FOR SUCCESSFUL DIGITAL TRANSFORMATION

Use Case: Scalable applications

Microservices without the Servers: AWS Lambda in Action

São Paulo. August,

Beyond 1001 Dedicated Data Service Instances

Microservices. GCPUG Tokyo Kubernetes Engine

Microservices Implementations not only with Java. Eberhard Wolff Fellow

Zero to Microservices in 5 minutes using Docker Containers. Mathew Lodge Weaveworks

Transcription:

Microservices What, Why? ( 마이크로서비스를꼭써야하나 )

Not only a browser anymore (Retire the Three-Tier Application Architecture to Move Toward Digital Business) MASA (Mesh App & Service Architecture) TOP 10 Technology Trend by Gartner for 2017 Microservices moving from monolythic design (deployment, scaling, maintenance) The mesh app and service architecture (MASA) is a multichannel solution architecture that leverages cloud and serverless computing, containers and microservices as well as APIs and events to deliver modular, flexible and dynamic solutions. Solutions ultimately support multiple users in multiple roles using multiple devices and communicating over multiple networks. However, MASA is a long term architectural shift that requires significant changes to development tooling and best practices. Gartner, Top 10 technology trends 2017

Microservices Bounded Context Autonomous Nomad & addressable services API Gateway Events Service Discovery Commands Event Bus Domain-Driven Design CQRS simplified Aggregates Domain Events Mediator Isolated Decoupled Async. communication Message Brokers Health Checks Transient Failures Handling Domain Entity Resiliency Retries with Exponential Backoff Circuit Breakers Docker Containers Linux Containers Docker Host Windows Containers RabbitMQ Hyper-V Containers Azure Service Bus NServiceBus MassTransit Brighter Polly Orchestrators Azure Service Fabric Azure Container Service Kubernetes Docker Swarm Mesos DC/OS Docker Image Docker Registry Docker Hub Azure Container Registry Stateful Services Actors

Maintainability How easy is it to maintain the code? How easy is it to fix a bug? Monitoring How easy is it to monitor solution health? Scalability How easy is it to add new computing power and handle heavier load? Updates How easy is it to update solution to the newest version? Onboarding How easy is it to get onboard a new team member?

-People -Process -Technologies

service-oriented architecture (SOA) architectural style loosely coupled services.

The Bounded Context pattern Cells Independent Autonomous Loosely coupled composition Cells can exist because their membranes define what is in and out and determine what can pass [Eric Evans]

Identifying a Domain Model per Microservice/BoundedContext - Ubiquitous Language ( 보편적언어 ) Conferences Management Orders and Registration Conferences Buyers Organizers Conferences Seats Seats Attendees Companies Country Orders Reservation Users Attendees Seats Assignments Pricing and Marketing Payment Customer Service Conferences Promotions Seats Payers Payments External Gateways Customers Returns

APIs separate codebase. deployed independently their own data well-defined don't need to share the same technology stack, libraries, or frameworks.

eshoponcontainers Reference Application - Architecture Client apps Docker Host Identity microservice (STS+users) eshop mobile app Xamarin.Forms C# xplat. OS: ios Android Windows eshop traditional Web app HTML eshop SPA Web app eshop WebApp MVC ASP.NET Core MVC Catalog microservice SQL Server db Ordering microservice Ordering.API GracePeriod worker Svc. Basket microservice SQL Server db SQL Server db Redis cache Marketing microservice MongoDB / CosmosDB SQL Server DB TypeScript/Angular 4 Location microservice MongoDB / CosmosDB

마이크로서비스접근방식과클라우드

SQL Database 2.1 million DBs Cosmos DB Billions transactions/day IoT Hub Millions of messages Event Hubs 60bn events/day Skype Cortana Intune Dynamics Power BI

An n-tier WebApplication

1 2 3 4 Cloud-based network services are more abstract Monoliths are difficult to maintain and scale Requires lots of server/network configuration and admin Doesn't make full use of cloud abstractions

Traditional application approach Microservices application approach A traditional application has most of its functionality within a few processes that are componentized with layers and libraries. Scales by cloning the app on multiple servers/vms App 1 A microservice application segregates functionality into separate smaller services. Scales out by deploying each service independently with multiple instances across servers/vms App 1 App 2

Data in Traditional approach Single monolithic database Tiers of specific technologies Web Tier Data in Microservices approach Graph of interconnected microservices State typically scoped to the microservice Remote Storage for cold data Services Tier Cache Tier Cache doesn t help much for massive data ingress (Events, IoT, etc.) Database servers are usually the bottleneck Mobile apps Web presentation services Data Tier SQL DB or No-SQL SQL [ ] Stateless services Stateful services Monolithic Databases are shared across services. Stateless services with separate stores Each microservice owns its model/data!

Microservices To The Rescue!

Microservices-Based Web Application

Migrating a traditional application to microservices 1) Traditional app 2) Hosted as guest executables or containers in Service Fabric 3) Simple modernization - new microservices added alongside 4) Deeper modernization - breaking app into microservices 5) Transformed into microservices

Public Cloud On Premises Private cloud Other Clouds Developer

컨테이너서비스와 MSA

Microservices!= Containers But they are a great fit

Microservices is an architectural design point; containers are an implementation detail that often helps.

More isolated More efficient PC VM Container Proces s Hardware Not shared Shared Shared Shared Kernel Not shared Not shared Shared* Shared System Resources (ex: File System) Not shared Not shared Not shared Shared

Container: App-A:v1 PC/VM Container: App-B:v3 Container: App-A:v2 App-A v1 App-B v3 App-A v2 Lib-L v2 Lib-L v3 Lib-L v3 Lib-M v2 Runtime v5 Runtime v7 Runtime v6

Azure Container Instances (ACI) Azure Container Instances Serverless Containers GA (Windows and Linux) Preview of AKS and ACI Benefits: Fastest and easiest way to run a container in the cloud No VM management Per-GB, Per-CPU, and Per-second billing Deploy images from DockerHub or Azure Container Registry Allows customers to opt-in to having the Azure Container Instances connector configured in their AKS cluster, without having to set it up themselves. The ACI connector enables customers to deploy additional container capacity for their AKS cluster using ACI. https://azure.microsoft.com/enus/blog/azure-container-instancesnow-generally-available/

Azure Container Instances (ACI) Azure Container Instances Get started easily

But what if I need ReadingList web App Azure Storage(Images) MySQL Recommendation service

Azure Kubernetes Service (AKS) A fully managed Kubernetes cluster Simplify the deployment, management, and operations of Kubernetes Easily manage clusters without container expertise No per-cluster charge. Only pay for resources consumed. Healing, auto-scaling, load balancing Reliable, zero-downtime rollout of software versions OSBA pre installed option enables customers to use the Open Service Broker for Azure with the Azure Container Service without having to first set it up.

Azure Kubernetes Service (AKS) Get started easily

Azure Kubernetes Service (AKS) Manage an AKS cluster

ACI Connector for Kubernetes aka Virtual Kubelet

Azure 기반의모범사례

eshoponcontainers Reference Application - Architecture aka.ms/microservicesarchitecture Client apps eshop mobile app Xamarin.Forms C# xplat. OS: ios Android Windows eshop traditional Web app HTML eshop SPA Web app Docker Host eshop WebApp MVC ASP.NET Core MVC Identity microservice (STS+users) Catalog microservice Ordering microservice Ordering.API GracePeriod worker Svc. Basket microservice SQL Server db SQL Server db SQL Server db Redis cache Marketing microservice MongoDB / CosmosDB SQL Server DB TypeScript/Angular 4 Location microservice MongoDB / CosmosDB

Direct Client-To-Microservice communication Client apps Microservices Microservice 1 Mobile app Microservice 2 Web app Microservice 3

API Gateway API Gateway Microservice 1 Calls aggregation Consumer A Microservice 2 Who is consuming our services? Who was consuming what? Consumer B What rate? Microservice 3 What time?

Using a custom API Gateway Service Client mobile app JSON Back end Microservice 1 Web API container Client SPA Web app JSON JavaScript/Angular.js Traditional Web app Browser HTML HTML Client WebApp MVC ASP.NET Core MVC container API Gateway container ASP.NET Core Web API Microservice 2 Web API container Microservice 3 Web API container

API Gateway as a service/product AZURE API MANAGEMENT

API Gateway with Azure API Management Architecture Client mobile app Back end Azure API Management Microservice 1 Web API Developer portal container Microservice 2 Web API API Gateway container Client SPA Web app JavaScript/Angular.js Client WebApp MVC ASP.NET Core MVC container Publisher portal Microservice 3 Web API container

Building resilient cloud applications Client Mobile App JSON Back end Microservice 1 Web API Container Client SPA WebApp JSON JavaScript / Angular.js Traditional WebApp Browser HTML HTML HTTP Request/Response Client WebApp MVC ASP.NET Core MVC Container API Gateway Container ASP.NET Core Web API HTTP Request/Response Microservice 2 Web API Container Microservice 3 Web API Container

Retries with Exponential Backoff Back end Microservice 1 Web API HTTP API Gateway ASP.NET Core Web API HTTP Microservice 2 Web API Request/Response Microservice 3 Web API Client WebApp MVC ASP.NET Core MVC Container

Retries with Exponential Backoff + Circuit Breaker Back end Microservice 1 Web API HTTP API Gateway ASP.NET Core Web API HTTP Microservice 2 Web API Request/Response Microservice 3 Web API Client WebApp MVC ASP.NET Core MVC Container

Synchronous vs. Async communication across Microservices Anti-pattern Synchronous all req./resp. cycle i.e. MVC app, API Gateway, etc. Http sync. request Http sync. response Http sync. Http sync. Http sync. Basket request Ordering request Catalog request Other Http sync. response Http sync. response Same Http Request/Response cycle! Http sync. response Asynchronous Comm. across internal microservices (EventBus: i.e. AMPQ) i.e. MVC app, API Gateway, etc. Http sync. request Http sync. response Basket Ordering Catalog Other

Asynchronous Event-Driven communication with an Event Bus Backend User-Profile Microservice UpdateUser command Database Web API Service UserUpdated event (Publish Action) DB update Event Bus (Publish/Subscribe Channel) Event Bus Abstractions/Interface Event Bus Implementations RabbitMQ Azure Service Bus Other: NServiceBus MassTransit etc. Basket Microservice Service UserUpdated event Buyer info UserUpdated event Buyer info Ordering Microservice Service Database as Cache Database Eventual consistency across microservices data based on event-driven async communication

API Gateway Router Health Checks API Usually Provided by the Orchestrator (i.e. Service Fabric, Kubernetes, etc.) Microservice 1 Consumer A /health Consumer B Microservice 2 query /health Service Registry

Blue Green / Canary

aka.ms/microservicesarchitecture http://aka.ms/microservicesebook https://aka.ms/microservices-guide-online-msft-docs