SlideShare a Scribd company logo
1 of 24
Download to read offline
서버를 위한 동시성 모델과Staged
  Event Driven Architecture

         2011.12.17
          chois79
Contents
•   인터넷 서비스 사용 동향

•   서버 이슈

•   동시성을 위한 서버 모델

     – 스레드 기반 모델

     – 이벤드 기반 모델

•   Staged Event Driven Architecture

•   적용 사례

•   결론
인터넷 서비스 사용 동향 (1/2)
• 인터넷 서비스를 이용하는 사용자 수의 급증


                    페이지 뷰: 1조

                    유니크 방문자: 8억



                   페이지 뷰: 240억

                   유니크 방문자: 3,700만



               자료 출처: DoubleClick Ad Planner
인터넷 서비스 사용 동향 (2/2)

• 순간 트래픽 폭증 현상
서버 이슈
• 동시에 많은 사용자에게 서비스를 제공해야 한다

  – 스레드 기반 모델

  – 이벤트 기반 모델

• 순간적으로 사용량이 급증하는 상황에서도 정상적인 서비스가

 가능해야 함

  – 순간 최대 사용량에 맞추어 장비를 마련하는 것은 현실적으로 불가능

  – 로드 관리를 위한 특별한 프레임웍은 없음
동시성을 위한 서버 모델
스레드 기반 모델

• 스레드란?

 – 경량 프로세스

 – 운영체제에서 스케쥴링하는 최소 단위

 – 프로세스에 비해 컨텍스트 스위칭 비용이 적음

 – 스택을 제외한 Heap 및 코드 영역 공유

 – 실행하는 작업이 서로 독립적일수록 더 나은 성능을 가짐
스레드 기반 서버 모델

• 서비스 요청당 하나의 스레드를 생성하여 처리




 – 코드가 직관적이고, 개발하기 편리하다

 – Ex) 스레드 기반 HTTP 서버: apache, tomcat
스레드 기반 서버 모델의 이슈
• 스레드를 많이 생성할 경우 성능 저하가 발생




 – 리소스 낭비: Jdk 1.6 기준 1M 스택 사이즈

 – 컨텍스트 스위칭, 스레드 생성 및 소멸에 따른 오버헤드
스레드 기반 모델에서의 부하 관리

• 스레드의 개수를 제한하는 방법

 – 스레드 풀을 사용하여 최대 개수를 제한하고, 생성에 따른 오

  버헤드를 감소


• 스레드의 개수를 어떻게 결정할 것인가?

 – 부하 테스트 이외에는 방법이 없음
이벤트 기반 모델
• Event-Driven Architecture?

   – 이벤트란 어플리케이션 내에서 중요한 상태의 변화

      • EX) Network or Disk I/O 읽기 준비 상태, 완료 상태, 타이머 등


   – 생성 및 핸들링 모듈로 구성, 서로 다른 프로세싱 유닛에서 동작

   – 일반적으로 넌블럭킹 IO와 같이 사용되며, 콜백을 이용하여 상태 변

     화에 따른 동작을 등록

   – 스레드 모델에 비해 컨텍스트 스위칭 부하가 작음
이벤트 기반 서버 모델
•   서비스는 FSM(finite state machine)로 구성되고, 최소한의 스레드를 생성하

    여 각 이벤트를 연속해서 처리




    – 모든 이벤트가 블럭킹 없이 수행될 경우 이상적인 스레드의 수는 코어 + 1

    – 스레드 모델 보다 프로그래밍의 복잡도가 증가

    – EX) 이벤트 기반 웹 서버: Nginx
이벤트 기반 서버 모델의 이슈

• 코드의 모듈화가 어려움

• 이벤트의 순서 제어가 어려움

• 블럭킹 작업을 최소화 해야 함

 – 스레드를 사용하여 이벤트 처리 간의 블럭킹을 최소화


• 스케쥴러의 이벤트 큐가 풀이 될 경우 오류 발생
이벤트 기반 모델의 부하 관리
• 트래픽이 급증하는 상황에서도 안정적인 서비스가 가능




 – 적은 수의 스레드가 순차적으로 이벤트 처리

 – 이벤트 큐의 크기에 의해 동시에 받아 들일 수 있는 요청 수가 결정
STAGED EVENT DRIVEN
ARCHITECTURE
Overview
• 스레드 + 이벤트 기반 모델

  – http://www.eecs.harvard.edu/~mdw/proj/seda/

• 이벤트 기반 Stage의 네트워크로 구성

  – 각각의 Stage는 서로 독립적으로 구성
Goals

• 효과적인 이벤트 기반 동시성 제공

• 동적인 스레드 풀 관리

• 코드 모듈화를 위한 구조화된 큐 관리

• 자동화된 부하 관리

• 자동화된 리소스 관리
Stage 란?
• Stage는 이벤트 핸들러, 큐, 스레드 풀, 컨트롤러로 구성




• 이벤트는 스레드에 의해 처리됨

  – 큐에 있는 이벤트를 처리하고 결과를 다음 Stage의 큐로 전달

• Stage의 동작은 컨트롤러에 의해 제어됨
부하 관리

• 시스템 전체 부화 관리  Stage 별 부하 관리

• Stage 상태 모니터링을 통한 부하 관리

  – 스레드 수의 조절

  – 상태에 따른 처리 동작을 변경

    • Ex) 진입 제어…
특징

• Stage 별 부하 관리가 가능

• 배치 작업이 쉽다

• 모듈화가 용이

  – 이벤트 기반 모델에 비해 개발이 용이

  – Stage별 분산 처리가 가능
이 슈
• 의존성이 있는 작업

• Stage별 효율적인 스레드 수 할당

• 효율적인 Stage 분할

• 2007년 성능 문제가 제기되어 더 이상 연구가 중지된 상태

  – But, 성능 보다 부하 관리와 개발의 용이성에 초점을 맞춘 구조
적용 사례
• Dynamo

  – Amazon’s Key-value 기반 NoSQL 서버

  – 리퀘스트를 SEDA의 Stage와 유사한 이벤트 파이프라인으로 구성

• Cassandra

  – 컬럼 기반 NoSQL 서버

  – 페이스 북에 의해 개발, 2008년 오프 소스로 공개

  – Read, Mutation, Gossip, Response, Load Balancer …
결론
• 스레드 기반 모델

   – 개발이 용이하지만, 오버헤드가 큼

• 이벤트 기반 모델

   – 성능이 뛰어나지만, 프로그램의 복잡성이 높음

• Staged Event Driven Architecture

   – 스레드 + 이벤트 기반 모델

   – 효율적인 부하 관리가 가능: Stage 단위 관리
Q&A

More Related Content

What's hot

5. 솔루션 카달로그
5. 솔루션 카달로그5. 솔루션 카달로그
5. 솔루션 카달로그Terry Cho
 
Serverless Architecture with Cloud Function
Serverless Architecture with Cloud FunctionServerless Architecture with Cloud Function
Serverless Architecture with Cloud FunctionHarrison Jung
 
조대협의 서버 사이드 - 대용량 아키텍처와 성능튜닝
조대협의 서버 사이드 - 대용량 아키텍처와 성능튜닝조대협의 서버 사이드 - 대용량 아키텍처와 성능튜닝
조대협의 서버 사이드 - 대용량 아키텍처와 성능튜닝Mungyu Choi
 
[테크데이즈2015] 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요
[테크데이즈2015] 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요[테크데이즈2015] 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요
[테크데이즈2015] 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요Youngjae Kim
 
Ch6 대용량서비스레퍼런스아키텍처 part.1
Ch6 대용량서비스레퍼런스아키텍처 part.1Ch6 대용량서비스레퍼런스아키텍처 part.1
Ch6 대용량서비스레퍼런스아키텍처 part.1Minchul Jung
 
[2017 AWS Startup Day] 인프라 관점에서 접근하는 리디스토리 개발기
[2017 AWS Startup Day] 인프라 관점에서 접근하는 리디스토리 개발기[2017 AWS Startup Day] 인프라 관점에서 접근하는 리디스토리 개발기
[2017 AWS Startup Day] 인프라 관점에서 접근하는 리디스토리 개발기Amazon Web Services Korea
 
Sever Side Rendering - 2019 Zeropage Devil's Camp
Sever Side Rendering - 2019 Zeropage Devil's CampSever Side Rendering - 2019 Zeropage Devil's Camp
Sever Side Rendering - 2019 Zeropage Devil's CampMookeunJi
 
RDS에서 Aurora PostgreSQL 마이그레이션하기
RDS에서 Aurora PostgreSQL 마이그레이션하기RDS에서 Aurora PostgreSQL 마이그레이션하기
RDS에서 Aurora PostgreSQL 마이그레이션하기Kyuhyun Byun
 
Google Cloud Next 2017 Seoul Extended 1st Session.
Google Cloud Next 2017 Seoul Extended 1st Session.Google Cloud Next 2017 Seoul Extended 1st Session.
Google Cloud Next 2017 Seoul Extended 1st Session.Harrison Jung
 
0222 사내세미나_오정민 스프링인액션
0222 사내세미나_오정민 스프링인액션0222 사내세미나_오정민 스프링인액션
0222 사내세미나_오정민 스프링인액션DataUs
 
내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - CI/CD
내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - CI/CD내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - CI/CD
내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - CI/CD용호 최
 
RDS에서 Aurora PostgreSQL Migration한 후기
RDS에서 Aurora PostgreSQL Migration한 후기RDS에서 Aurora PostgreSQL Migration한 후기
RDS에서 Aurora PostgreSQL Migration한 후기Kyuhyun Byun
 
마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)
마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)
마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)Amazon Web Services Korea
 
Micro Service Architecture의 이해
Micro Service Architecture의 이해Micro Service Architecture의 이해
Micro Service Architecture의 이해Terry Cho
 

What's hot (20)

[AWS KR UG 1회 세미나] AWS EB, etc @ 김경민
[AWS KR UG 1회 세미나] AWS EB, etc @ 김경민[AWS KR UG 1회 세미나] AWS EB, etc @ 김경민
[AWS KR UG 1회 세미나] AWS EB, etc @ 김경민
 
Amazon DynamoDB
Amazon DynamoDBAmazon DynamoDB
Amazon DynamoDB
 
About Uwsgi
About UwsgiAbout Uwsgi
About Uwsgi
 
Computing Paradigm
Computing ParadigmComputing Paradigm
Computing Paradigm
 
5. 솔루션 카달로그
5. 솔루션 카달로그5. 솔루션 카달로그
5. 솔루션 카달로그
 
Serverless Architecture with Cloud Function
Serverless Architecture with Cloud FunctionServerless Architecture with Cloud Function
Serverless Architecture with Cloud Function
 
조대협의 서버 사이드 - 대용량 아키텍처와 성능튜닝
조대협의 서버 사이드 - 대용량 아키텍처와 성능튜닝조대협의 서버 사이드 - 대용량 아키텍처와 성능튜닝
조대협의 서버 사이드 - 대용량 아키텍처와 성능튜닝
 
[테크데이즈2015] 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요
[테크데이즈2015] 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요[테크데이즈2015] 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요
[테크데이즈2015] 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요
 
Ch6 대용량서비스레퍼런스아키텍처 part.1
Ch6 대용량서비스레퍼런스아키텍처 part.1Ch6 대용량서비스레퍼런스아키텍처 part.1
Ch6 대용량서비스레퍼런스아키텍처 part.1
 
AWS 약쟁이
AWS 약쟁이AWS 약쟁이
AWS 약쟁이
 
[2017 AWS Startup Day] 인프라 관점에서 접근하는 리디스토리 개발기
[2017 AWS Startup Day] 인프라 관점에서 접근하는 리디스토리 개발기[2017 AWS Startup Day] 인프라 관점에서 접근하는 리디스토리 개발기
[2017 AWS Startup Day] 인프라 관점에서 접근하는 리디스토리 개발기
 
Sever Side Rendering - 2019 Zeropage Devil's Camp
Sever Side Rendering - 2019 Zeropage Devil's CampSever Side Rendering - 2019 Zeropage Devil's Camp
Sever Side Rendering - 2019 Zeropage Devil's Camp
 
RDS에서 Aurora PostgreSQL 마이그레이션하기
RDS에서 Aurora PostgreSQL 마이그레이션하기RDS에서 Aurora PostgreSQL 마이그레이션하기
RDS에서 Aurora PostgreSQL 마이그레이션하기
 
AWS RDS, DYNAMO
AWS RDS, DYNAMOAWS RDS, DYNAMO
AWS RDS, DYNAMO
 
Google Cloud Next 2017 Seoul Extended 1st Session.
Google Cloud Next 2017 Seoul Extended 1st Session.Google Cloud Next 2017 Seoul Extended 1st Session.
Google Cloud Next 2017 Seoul Extended 1st Session.
 
0222 사내세미나_오정민 스프링인액션
0222 사내세미나_오정민 스프링인액션0222 사내세미나_오정민 스프링인액션
0222 사내세미나_오정민 스프링인액션
 
내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - CI/CD
내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - CI/CD내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - CI/CD
내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - CI/CD
 
RDS에서 Aurora PostgreSQL Migration한 후기
RDS에서 Aurora PostgreSQL Migration한 후기RDS에서 Aurora PostgreSQL Migration한 후기
RDS에서 Aurora PostgreSQL Migration한 후기
 
마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)
마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)
마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)
 
Micro Service Architecture의 이해
Micro Service Architecture의 이해Micro Service Architecture의 이해
Micro Service Architecture의 이해
 

Similar to 서버를 위한 동시성 모델과 Staged eventdrivenarchitecture

Ddd start 부록 지앤선&ksug
Ddd start 부록 지앤선&ksugDdd start 부록 지앤선&ksug
Ddd start 부록 지앤선&ksugbeom kyun choi
 
데이터베이스 운영, 서버리스로 걱정 끝! - 윤석찬, AWS 테크에반젤리스트 - AWS Builders Online Series
데이터베이스 운영, 서버리스로 걱정 끝! - 윤석찬, AWS 테크에반젤리스트 - AWS Builders Online Series데이터베이스 운영, 서버리스로 걱정 끝! - 윤석찬, AWS 테크에반젤리스트 - AWS Builders Online Series
데이터베이스 운영, 서버리스로 걱정 끝! - 윤석찬, AWS 테크에반젤리스트 - AWS Builders Online SeriesAmazon Web Services Korea
 
빅데이터 기술 현황과 시장 전망(2014)
빅데이터 기술 현황과 시장 전망(2014)빅데이터 기술 현황과 시장 전망(2014)
빅데이터 기술 현황과 시장 전망(2014)Channy Yun
 
Lambda를 활용한 서버없는 아키텍쳐 구현하기 :: 김기완 :: AWS Summit Seoul 2016
Lambda를 활용한 서버없는 아키텍쳐 구현하기 :: 김기완 :: AWS Summit Seoul 2016Lambda를 활용한 서버없는 아키텍쳐 구현하기 :: 김기완 :: AWS Summit Seoul 2016
Lambda를 활용한 서버없는 아키텍쳐 구현하기 :: 김기완 :: AWS Summit Seoul 2016Amazon Web Services Korea
 
AWS Partner Techshift - Well Architected Framework (이경수 솔루션즈 아키텍트)
AWS Partner Techshift - Well Architected Framework (이경수 솔루션즈 아키텍트)AWS Partner Techshift - Well Architected Framework (이경수 솔루션즈 아키텍트)
AWS Partner Techshift - Well Architected Framework (이경수 솔루션즈 아키텍트)Amazon Web Services Korea
 
AWS Certified Cloud Practitioner
AWS Certified Cloud PractitionerAWS Certified Cloud Practitioner
AWS Certified Cloud Practitioner영기 김
 
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?VMware Tanzu Korea
 
AWS CLOUD 2017 - 클라우드 마이그레이션 어떻게 할 것인가? (이병윤 이사)
AWS CLOUD 2017 - 클라우드 마이그레이션 어떻게 할 것인가? (이병윤 이사)AWS CLOUD 2017 - 클라우드 마이그레이션 어떻게 할 것인가? (이병윤 이사)
AWS CLOUD 2017 - 클라우드 마이그레이션 어떻게 할 것인가? (이병윤 이사)Amazon Web Services Korea
 
AWS를 활용한 글로벌 아키텍처 운용 전략 - 김상필 솔루션즈 아키텍트:: AWS Cloud Track 2 Advanced
AWS를 활용한 글로벌 아키텍처 운용 전략 - 김상필 솔루션즈 아키텍트:: AWS Cloud Track 2 AdvancedAWS를 활용한 글로벌 아키텍처 운용 전략 - 김상필 솔루션즈 아키텍트:: AWS Cloud Track 2 Advanced
AWS를 활용한 글로벌 아키텍처 운용 전략 - 김상필 솔루션즈 아키텍트:: AWS Cloud Track 2 AdvancedAmazon Web Services Korea
 
서버리스 애플리케이션 구축 패턴 및 구축 사례 - AWS Summit Seoul 2017
서버리스 애플리케이션 구축 패턴 및 구축 사례 - AWS Summit Seoul 2017서버리스 애플리케이션 구축 패턴 및 구축 사례 - AWS Summit Seoul 2017
서버리스 애플리케이션 구축 패턴 및 구축 사례 - AWS Summit Seoul 2017Amazon Web Services Korea
 
NSO Introduction
NSO IntroductionNSO Introduction
NSO IntroductionJunho Lee
 
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?VMware Tanzu Korea
 
세션3 node.js의 의미와 자바의 대안
세션3 node.js의 의미와 자바의 대안세션3 node.js의 의미와 자바의 대안
세션3 node.js의 의미와 자바의 대안Lee Ji Eun
 
Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos uEngine Solutions
 
AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017
AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017
AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017Amazon Web Services Korea
 
150114 OpenStack Korea 정기세미나 session3 - OpenStack 네트워크와 SDN
150114 OpenStack Korea 정기세미나 session3 - OpenStack 네트워크와 SDN150114 OpenStack Korea 정기세미나 session3 - OpenStack 네트워크와 SDN
150114 OpenStack Korea 정기세미나 session3 - OpenStack 네트워크와 SDNIan Choi
 
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기Amazon Web Services Korea
 
Azure를 이용한 Join 없는 글로벌 분산 시스템 설계하기
Azure를 이용한 Join 없는 글로벌 분산 시스템 설계하기Azure를 이용한 Join 없는 글로벌 분산 시스템 설계하기
Azure를 이용한 Join 없는 글로벌 분산 시스템 설계하기Gyuwon Yi
 
빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.xTerry Cho
 

Similar to 서버를 위한 동시성 모델과 Staged eventdrivenarchitecture (20)

Ddd start 부록 지앤선&ksug
Ddd start 부록 지앤선&ksugDdd start 부록 지앤선&ksug
Ddd start 부록 지앤선&ksug
 
데이터베이스 운영, 서버리스로 걱정 끝! - 윤석찬, AWS 테크에반젤리스트 - AWS Builders Online Series
데이터베이스 운영, 서버리스로 걱정 끝! - 윤석찬, AWS 테크에반젤리스트 - AWS Builders Online Series데이터베이스 운영, 서버리스로 걱정 끝! - 윤석찬, AWS 테크에반젤리스트 - AWS Builders Online Series
데이터베이스 운영, 서버리스로 걱정 끝! - 윤석찬, AWS 테크에반젤리스트 - AWS Builders Online Series
 
Serverless Architecture - 김현민
Serverless Architecture - 김현민Serverless Architecture - 김현민
Serverless Architecture - 김현민
 
빅데이터 기술 현황과 시장 전망(2014)
빅데이터 기술 현황과 시장 전망(2014)빅데이터 기술 현황과 시장 전망(2014)
빅데이터 기술 현황과 시장 전망(2014)
 
Lambda를 활용한 서버없는 아키텍쳐 구현하기 :: 김기완 :: AWS Summit Seoul 2016
Lambda를 활용한 서버없는 아키텍쳐 구현하기 :: 김기완 :: AWS Summit Seoul 2016Lambda를 활용한 서버없는 아키텍쳐 구현하기 :: 김기완 :: AWS Summit Seoul 2016
Lambda를 활용한 서버없는 아키텍쳐 구현하기 :: 김기완 :: AWS Summit Seoul 2016
 
AWS Partner Techshift - Well Architected Framework (이경수 솔루션즈 아키텍트)
AWS Partner Techshift - Well Architected Framework (이경수 솔루션즈 아키텍트)AWS Partner Techshift - Well Architected Framework (이경수 솔루션즈 아키텍트)
AWS Partner Techshift - Well Architected Framework (이경수 솔루션즈 아키텍트)
 
AWS Certified Cloud Practitioner
AWS Certified Cloud PractitionerAWS Certified Cloud Practitioner
AWS Certified Cloud Practitioner
 
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?
 
AWS CLOUD 2017 - 클라우드 마이그레이션 어떻게 할 것인가? (이병윤 이사)
AWS CLOUD 2017 - 클라우드 마이그레이션 어떻게 할 것인가? (이병윤 이사)AWS CLOUD 2017 - 클라우드 마이그레이션 어떻게 할 것인가? (이병윤 이사)
AWS CLOUD 2017 - 클라우드 마이그레이션 어떻게 할 것인가? (이병윤 이사)
 
AWS를 활용한 글로벌 아키텍처 운용 전략 - 김상필 솔루션즈 아키텍트:: AWS Cloud Track 2 Advanced
AWS를 활용한 글로벌 아키텍처 운용 전략 - 김상필 솔루션즈 아키텍트:: AWS Cloud Track 2 AdvancedAWS를 활용한 글로벌 아키텍처 운용 전략 - 김상필 솔루션즈 아키텍트:: AWS Cloud Track 2 Advanced
AWS를 활용한 글로벌 아키텍처 운용 전략 - 김상필 솔루션즈 아키텍트:: AWS Cloud Track 2 Advanced
 
서버리스 애플리케이션 구축 패턴 및 구축 사례 - AWS Summit Seoul 2017
서버리스 애플리케이션 구축 패턴 및 구축 사례 - AWS Summit Seoul 2017서버리스 애플리케이션 구축 패턴 및 구축 사례 - AWS Summit Seoul 2017
서버리스 애플리케이션 구축 패턴 및 구축 사례 - AWS Summit Seoul 2017
 
NSO Introduction
NSO IntroductionNSO Introduction
NSO Introduction
 
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
 
세션3 node.js의 의미와 자바의 대안
세션3 node.js의 의미와 자바의 대안세션3 node.js의 의미와 자바의 대안
세션3 node.js의 의미와 자바의 대안
 
Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos
 
AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017
AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017
AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017
 
150114 OpenStack Korea 정기세미나 session3 - OpenStack 네트워크와 SDN
150114 OpenStack Korea 정기세미나 session3 - OpenStack 네트워크와 SDN150114 OpenStack Korea 정기세미나 session3 - OpenStack 네트워크와 SDN
150114 OpenStack Korea 정기세미나 session3 - OpenStack 네트워크와 SDN
 
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
 
Azure를 이용한 Join 없는 글로벌 분산 시스템 설계하기
Azure를 이용한 Join 없는 글로벌 분산 시스템 설계하기Azure를 이용한 Join 없는 글로벌 분산 시스템 설계하기
Azure를 이용한 Join 없는 글로벌 분산 시스템 설계하기
 
빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x
 

More from HyeonSeok Choi

밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05HyeonSeok Choi
 
밑바닥부터시작하는딥러닝 Ch2
밑바닥부터시작하는딥러닝 Ch2밑바닥부터시작하는딥러닝 Ch2
밑바닥부터시작하는딥러닝 Ch2HyeonSeok Choi
 
프로그래머를위한선형대수학1.2
프로그래머를위한선형대수학1.2프로그래머를위한선형대수학1.2
프로그래머를위한선형대수학1.2HyeonSeok Choi
 
알고리즘 중심의 머신러닝 가이드 Ch04
알고리즘 중심의 머신러닝 가이드 Ch04알고리즘 중심의 머신러닝 가이드 Ch04
알고리즘 중심의 머신러닝 가이드 Ch04HyeonSeok Choi
 
딥러닝 제대로시작하기 Ch04
딥러닝 제대로시작하기 Ch04딥러닝 제대로시작하기 Ch04
딥러닝 제대로시작하기 Ch04HyeonSeok Choi
 
밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05HyeonSeok Choi
 
7가지 동시성 모델 - 데이터 병렬성
7가지 동시성 모델 - 데이터 병렬성7가지 동시성 모델 - 데이터 병렬성
7가지 동시성 모델 - 데이터 병렬성HyeonSeok Choi
 
7가지 동시성 모델 4장
7가지 동시성 모델 4장7가지 동시성 모델 4장
7가지 동시성 모델 4장HyeonSeok Choi
 
실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8HyeonSeok Choi
 
실무로 배우는 시스템 성능 최적화 Ch7
실무로 배우는 시스템 성능 최적화 Ch7실무로 배우는 시스템 성능 최적화 Ch7
실무로 배우는 시스템 성능 최적화 Ch7HyeonSeok Choi
 
실무로 배우는 시스템 성능 최적화 Ch6
실무로 배우는 시스템 성능 최적화 Ch6실무로 배우는 시스템 성능 최적화 Ch6
실무로 배우는 시스템 성능 최적화 Ch6HyeonSeok Choi
 
Logstash, ElasticSearch, Kibana
Logstash, ElasticSearch, KibanaLogstash, ElasticSearch, Kibana
Logstash, ElasticSearch, KibanaHyeonSeok Choi
 
실무로배우는시스템성능최적화 Ch1
실무로배우는시스템성능최적화 Ch1실무로배우는시스템성능최적화 Ch1
실무로배우는시스템성능최적화 Ch1HyeonSeok Choi
 
HTTP 완벽가이드 21장
HTTP 완벽가이드 21장HTTP 완벽가이드 21장
HTTP 완벽가이드 21장HyeonSeok Choi
 
HTTP 완벽가이드 16장
HTTP 완벽가이드 16장HTTP 완벽가이드 16장
HTTP 완벽가이드 16장HyeonSeok Choi
 

More from HyeonSeok Choi (20)

밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05
 
밑바닥부터시작하는딥러닝 Ch2
밑바닥부터시작하는딥러닝 Ch2밑바닥부터시작하는딥러닝 Ch2
밑바닥부터시작하는딥러닝 Ch2
 
프로그래머를위한선형대수학1.2
프로그래머를위한선형대수학1.2프로그래머를위한선형대수학1.2
프로그래머를위한선형대수학1.2
 
알고리즘 중심의 머신러닝 가이드 Ch04
알고리즘 중심의 머신러닝 가이드 Ch04알고리즘 중심의 머신러닝 가이드 Ch04
알고리즘 중심의 머신러닝 가이드 Ch04
 
딥러닝 제대로시작하기 Ch04
딥러닝 제대로시작하기 Ch04딥러닝 제대로시작하기 Ch04
딥러닝 제대로시작하기 Ch04
 
밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05
 
함수적 사고 2장
함수적 사고 2장함수적 사고 2장
함수적 사고 2장
 
7가지 동시성 모델 - 데이터 병렬성
7가지 동시성 모델 - 데이터 병렬성7가지 동시성 모델 - 데이터 병렬성
7가지 동시성 모델 - 데이터 병렬성
 
7가지 동시성 모델 4장
7가지 동시성 모델 4장7가지 동시성 모델 4장
7가지 동시성 모델 4장
 
Bounded Context
Bounded ContextBounded Context
Bounded Context
 
DDD Repository
DDD RepositoryDDD Repository
DDD Repository
 
DDD Start Ch#3
DDD Start Ch#3DDD Start Ch#3
DDD Start Ch#3
 
실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8
 
실무로 배우는 시스템 성능 최적화 Ch7
실무로 배우는 시스템 성능 최적화 Ch7실무로 배우는 시스템 성능 최적화 Ch7
실무로 배우는 시스템 성능 최적화 Ch7
 
실무로 배우는 시스템 성능 최적화 Ch6
실무로 배우는 시스템 성능 최적화 Ch6실무로 배우는 시스템 성능 최적화 Ch6
실무로 배우는 시스템 성능 최적화 Ch6
 
Logstash, ElasticSearch, Kibana
Logstash, ElasticSearch, KibanaLogstash, ElasticSearch, Kibana
Logstash, ElasticSearch, Kibana
 
실무로배우는시스템성능최적화 Ch1
실무로배우는시스템성능최적화 Ch1실무로배우는시스템성능최적화 Ch1
실무로배우는시스템성능최적화 Ch1
 
HTTP 완벽가이드 21장
HTTP 완벽가이드 21장HTTP 완벽가이드 21장
HTTP 완벽가이드 21장
 
HTTP 완벽가이드 16장
HTTP 완벽가이드 16장HTTP 완벽가이드 16장
HTTP 완벽가이드 16장
 
HTTPS
HTTPSHTTPS
HTTPS
 

Recently uploaded

MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionKim Daeun
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Kim Daeun
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)Tae Young Lee
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Wonjun Hwang
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Wonjun Hwang
 

Recently uploaded (6)

MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
 

서버를 위한 동시성 모델과 Staged eventdrivenarchitecture

  • 1. 서버를 위한 동시성 모델과Staged Event Driven Architecture 2011.12.17 chois79
  • 2. Contents • 인터넷 서비스 사용 동향 • 서버 이슈 • 동시성을 위한 서버 모델 – 스레드 기반 모델 – 이벤드 기반 모델 • Staged Event Driven Architecture • 적용 사례 • 결론
  • 3. 인터넷 서비스 사용 동향 (1/2) • 인터넷 서비스를 이용하는 사용자 수의 급증 페이지 뷰: 1조 유니크 방문자: 8억 페이지 뷰: 240억 유니크 방문자: 3,700만 자료 출처: DoubleClick Ad Planner
  • 4. 인터넷 서비스 사용 동향 (2/2) • 순간 트래픽 폭증 현상
  • 5. 서버 이슈 • 동시에 많은 사용자에게 서비스를 제공해야 한다 – 스레드 기반 모델 – 이벤트 기반 모델 • 순간적으로 사용량이 급증하는 상황에서도 정상적인 서비스가 가능해야 함 – 순간 최대 사용량에 맞추어 장비를 마련하는 것은 현실적으로 불가능 – 로드 관리를 위한 특별한 프레임웍은 없음
  • 7. 스레드 기반 모델 • 스레드란? – 경량 프로세스 – 운영체제에서 스케쥴링하는 최소 단위 – 프로세스에 비해 컨텍스트 스위칭 비용이 적음 – 스택을 제외한 Heap 및 코드 영역 공유 – 실행하는 작업이 서로 독립적일수록 더 나은 성능을 가짐
  • 8. 스레드 기반 서버 모델 • 서비스 요청당 하나의 스레드를 생성하여 처리 – 코드가 직관적이고, 개발하기 편리하다 – Ex) 스레드 기반 HTTP 서버: apache, tomcat
  • 9. 스레드 기반 서버 모델의 이슈 • 스레드를 많이 생성할 경우 성능 저하가 발생 – 리소스 낭비: Jdk 1.6 기준 1M 스택 사이즈 – 컨텍스트 스위칭, 스레드 생성 및 소멸에 따른 오버헤드
  • 10. 스레드 기반 모델에서의 부하 관리 • 스레드의 개수를 제한하는 방법 – 스레드 풀을 사용하여 최대 개수를 제한하고, 생성에 따른 오 버헤드를 감소 • 스레드의 개수를 어떻게 결정할 것인가? – 부하 테스트 이외에는 방법이 없음
  • 11. 이벤트 기반 모델 • Event-Driven Architecture? – 이벤트란 어플리케이션 내에서 중요한 상태의 변화 • EX) Network or Disk I/O 읽기 준비 상태, 완료 상태, 타이머 등 – 생성 및 핸들링 모듈로 구성, 서로 다른 프로세싱 유닛에서 동작 – 일반적으로 넌블럭킹 IO와 같이 사용되며, 콜백을 이용하여 상태 변 화에 따른 동작을 등록 – 스레드 모델에 비해 컨텍스트 스위칭 부하가 작음
  • 12. 이벤트 기반 서버 모델 • 서비스는 FSM(finite state machine)로 구성되고, 최소한의 스레드를 생성하 여 각 이벤트를 연속해서 처리 – 모든 이벤트가 블럭킹 없이 수행될 경우 이상적인 스레드의 수는 코어 + 1 – 스레드 모델 보다 프로그래밍의 복잡도가 증가 – EX) 이벤트 기반 웹 서버: Nginx
  • 13. 이벤트 기반 서버 모델의 이슈 • 코드의 모듈화가 어려움 • 이벤트의 순서 제어가 어려움 • 블럭킹 작업을 최소화 해야 함 – 스레드를 사용하여 이벤트 처리 간의 블럭킹을 최소화 • 스케쥴러의 이벤트 큐가 풀이 될 경우 오류 발생
  • 14. 이벤트 기반 모델의 부하 관리 • 트래픽이 급증하는 상황에서도 안정적인 서비스가 가능 – 적은 수의 스레드가 순차적으로 이벤트 처리 – 이벤트 큐의 크기에 의해 동시에 받아 들일 수 있는 요청 수가 결정
  • 16. Overview • 스레드 + 이벤트 기반 모델 – http://www.eecs.harvard.edu/~mdw/proj/seda/ • 이벤트 기반 Stage의 네트워크로 구성 – 각각의 Stage는 서로 독립적으로 구성
  • 17. Goals • 효과적인 이벤트 기반 동시성 제공 • 동적인 스레드 풀 관리 • 코드 모듈화를 위한 구조화된 큐 관리 • 자동화된 부하 관리 • 자동화된 리소스 관리
  • 18. Stage 란? • Stage는 이벤트 핸들러, 큐, 스레드 풀, 컨트롤러로 구성 • 이벤트는 스레드에 의해 처리됨 – 큐에 있는 이벤트를 처리하고 결과를 다음 Stage의 큐로 전달 • Stage의 동작은 컨트롤러에 의해 제어됨
  • 19. 부하 관리 • 시스템 전체 부화 관리  Stage 별 부하 관리 • Stage 상태 모니터링을 통한 부하 관리 – 스레드 수의 조절 – 상태에 따른 처리 동작을 변경 • Ex) 진입 제어…
  • 20. 특징 • Stage 별 부하 관리가 가능 • 배치 작업이 쉽다 • 모듈화가 용이 – 이벤트 기반 모델에 비해 개발이 용이 – Stage별 분산 처리가 가능
  • 21. 이 슈 • 의존성이 있는 작업 • Stage별 효율적인 스레드 수 할당 • 효율적인 Stage 분할 • 2007년 성능 문제가 제기되어 더 이상 연구가 중지된 상태 – But, 성능 보다 부하 관리와 개발의 용이성에 초점을 맞춘 구조
  • 22. 적용 사례 • Dynamo – Amazon’s Key-value 기반 NoSQL 서버 – 리퀘스트를 SEDA의 Stage와 유사한 이벤트 파이프라인으로 구성 • Cassandra – 컬럼 기반 NoSQL 서버 – 페이스 북에 의해 개발, 2008년 오프 소스로 공개 – Read, Mutation, Gossip, Response, Load Balancer …
  • 23. 결론 • 스레드 기반 모델 – 개발이 용이하지만, 오버헤드가 큼 • 이벤트 기반 모델 – 성능이 뛰어나지만, 프로그램의 복잡성이 높음 • Staged Event Driven Architecture – 스레드 + 이벤트 기반 모델 – 효율적인 부하 관리가 가능: Stage 단위 관리
  • 24. Q&A