Ryu
  • 👩🏻‍💻 Ryu / software_engineer
  • ✨Resume
  • Python3
    • Python3 가상환경 설정하기
      • Python3 vs Python2
      • Pyenv
      • Venv
      • Pip
    • Flask
      • Flask 설치하기
      • API Server 만들기
    • REST API
    • Command Line 활용하기
    • Module 사용하기
      • Pickle - 자료형을 파일로 저장할 때
    • MongoDB connection
      • Pymongo
    • WSGI
      • 💡WSGI 가 필요한 이유
      • Web Server / WSGI / Middleware / Application 구조
      • WSGI Middleware 종류
      • Gunicorn
        • Gunicorn vs Uwsgi
    • Dockerize
      • 💡Dockerize 가 필요한 이유
      • 1. Create Dockerfile
        • Gunicorn 으로 nginx 와 app 연결하기
    • Kubernetes 로 배포하기
      • 💡Kubernetes 가 필요한 이유
      • Helm 사용하기
      • Helm 으로 k8s 에 앱 배포하기
  • Open Tracing (정리중)
    • Open Tracing 이란 무엇인가
    • Python OpenTracing Example
    • Jaeger, Jaeger UI
    • Python Jaeger Tutorial
    • Zipkin 알아보기
    • Jaeger-client 리스팅
  • Microservice Architecture
    • Netflix의 MSA 컨셉
      • ⚡️ MSA 를 도입할때 고려해야할 점들
  • Paper
    • Dynamo: Amazon’s Highly Available Key-value Store
      • 1. Introduction
      • 2. Background
      • 3. Related Work
        • Related Paper) Pastry, Chord
        • Byzantine Fault Tolerance
      • 4. System Architecture
        • 4.1 System Interface
        • 4.2 Partitioning
        • 4.3 Replication
        • Hash Function
  • Frontend
    • CommonJS 와 AMD
    • RequireJS
    • WebSocket
      • WebSocket vs Socket.io
      • polling vs long polling vs streaming
    • Vue.js
      • Vue.js 에서 WebSocket 사용하기
      • [프로젝트] Vue, Vuex, AntDesignVue 로 운영툴 만들기
    • React x Redux 로 프로젝트 만들기
      • 0. React, Redux 를 선택한 이유
      • 1. 프로젝트 생성하고 Webpack4 적용하기
      • 2. React 와 ReactDOM 적용하기
      • 3. Material UI 적용하기
  • Data Engineering
    • Spark
      • Spark 이란?
      • 각 데몬의 역할 Driver, Master, Worker
      • 장단점 / 함께사용하는 툴 / 사용 사례
  • Service Mesh (정리중)
    • RPC
    • gRPC - Python Server 만들기
      • step 2.
Powered by GitBook
On this page
  • 📌 목차
  • 🌈 Micro Service 정의하기
  • 1) 어떤게 Micro Service가 아닌가?
  • 2) 무엇이 Micro Service 인가?
  • 3) MSA 를 위해 필요한 것
  • 🌈 MSA 가 필요한 이유
  • 🌈 Netflix 구조
  • ✔️ Netflix Service Spec (2017년 기준)

Was this helpful?

  1. Microservice Architecture

Netflix의 MSA 컨셉

Netflix의 Micro Service Architecture 컨셉

PreviousJaeger-client 리스팅Next⚡️ MSA 를 도입할때 고려해야할 점들

Last updated 5 years ago

Was this helpful?

YouTube 영상을 시청하며 요약한 글입니다.

📌 목차

  • Microservice 정의

  • MSA 가 필요한 이유

  • MSA 를 위해 필요한 것

  • Netflix 서비스 구조

  • Netflix가 Microservice 를 구현하면서 겪었던 힘들었던 점과 해결법

  • 조직의 구조와 아키텍처가 서로 어떻게 연관되어 있는가

🌈 Micro Service 정의하기

1) 어떤게 Micro Service가 아닌가?

위 구조의 문제점

  • Java Application code base가 Monolithic 이다.

    • 매주 반복적으로 배포되는 애플리케이션의 코드베이스에 모든 사람들이 한꺼번에 붙어서 작업을 해야했다.

    • 구조 변경이 발생할 때마다 이슈가 발생했고, 원인 분석이 어려웠다.

      • Why? 코드 변경 -> 구동 -> 원인 분석 -> 변경 일련의 과정들에서 하나의 애플리케이션에 너무 많은 변경이 발생하므로 분석 소요시간이 점점 늘어남.

  • Database 는 더 심각한 Monolithic 이다.

    • 거대한 하드웨어에서 동작하는 거대한 1개의 오라클 DB

    • 이 DB가 다운되면 서비스 전체가 다운됨.

    • 트래픽 피크에 대비하기 위해 더 좋은 하드웨어를 계속 찾아다녀야했다.

  • 모든게 서로 너무 깊게 연결되어서 변경에 속도가 나지 않는다.

바로 이런 모델이 오늘날 만들면 안되는 서비스의 전형적인 모습입니다.

2) 무엇이 Micro Service 인가?

  • 2000년대 사용했던 Monolithic 문제의 해결이다.

  • "위험을 잘게 쪼개어 내는 것"

  • 일종의 추상화

3) MSA 를 위해 필요한 것

  • 모듈화

  • 서비스에 필요한 데이터를 캡슐화

  • 거대한 워크로드를 여러개의 작은 부분으로 분리해서 처리하는 분산의 개념

  • 탄력성을 가진 가상화 기반 환경

  • 운영은 최대한 자동화

-

✔️번외) 마틴 파울러가 정의한 Micro Service

작은 서비스의 집합으로, 하나의 애플리케이션을 구현하는 것이며, 각각의 작은 서비스들은 자신만의 독립적인 프로세스를 가지고 있고, 가벼운 구조를 가지는데, HTTP 기반의 API 를 사용해 서로 연동한다.

🌈 MSA 가 필요한 이유

  • 갑자기 폭증하는 트래픽

  • 뜻밖의 DDOS 공격

  • 서비스 구동 환경에 변화를 주어야하는 상황

위와 같은 상황들을 처리하는 중 이슈가 발생하여 고객들이 서비스 사용을 할 수 없는 상황이 올 수 있습니다.

🌈 Netflix 구조

  • Zuul: 프락시 계층

    • 동적 라우팅 수행

  • NCCP: 레거시 계층

    • 오래된 옛날 장치를 지원

    • 기본적인 영화 재생 기능 제공

  • API

    • API 게이트웨이를 통해 제공

    • 고객이 발생시키는 요청에 대한 응답을 처리하기 위해 다른 많은 서비스들과 통신한다.

-

✔️ Netflix Service Spec (2017년 기준)

  • 8600만명 사용자

  • 190여개 국가

  • 10개 이상의 언어로 제공

  • 1000여개의 장치에서 동작

모든 Micro Service 는 AWS 위에서 동작합니다.

넷플릭스 마이크로 서비스 가이드 - 혼돈의 제왕
초기의 Netflix Service 구조