배민찬(https://www.baeminchan.com) 서비스의 백엔드 시스템 중 일부가 지난 1년간 어떤 고민과 아이디어, 결과물을 만들어냈는지 공유하려고 합니다. 발표 중 언급되는 용어나 도구에 대해 일반적인 정의나 간단한 설명은 언급되나 자세히 다루지 않습니다. 사용된 도구들로 어떻게 이벤트 기반 분산 시스템을 만들었는지에 대한 이야기가 중심입니다.
배민찬(https://www.baeminchan.com) 서비스의 백엔드 시스템 중 일부가 지난 1년간 어떤 고민과 아이디어, 결과물을 만들어냈는지 공유하려고 합니다. 발표 중 언급되는 용어나 도구에 대해 일반적인 정의나 간단한 설명은 언급되나 자세히 다루지 않습니다. 사용된 도구들로 어떻게 이벤트 기반 분산 시스템을 만들었는지에 대한 이야기가 중심입니다.
Introduction to failover clustering with sql serverEduardo Castro
In this presentation we review the basic requirements to install a SQL Server Failover Cluster.
Regards,
Eduardo Castro Martinez
http://ecastrom.blogspot.com
http://comunidadwindows.org
기존에 저희 회사에서 사용하던 모니터링은 Zabbix 였습니다.
컨테이너 모니터링 부분으로 옮겨가면서 변화가 필요하였고, 이에 대해서 프로메테우스를 활용한 모니터링 방법을 자연스럽게 고민하게 되었습니다.
이에 이영주님께서 테크세션을 진행하였고, 이에 발표자료를 올립니다.
5개의 부분으로 구성되어 있으며, 세팅 방법에 대한 내용까지 포함합니다.
01. Prometheus?
02. Usage
03. Alertmanager
04. Cluster
05. Performance
※다운로드하시면 더 선명한 자료를 보실 수 있습니다.
동접 200만 명이 접속할 수백 대의 게임 서버가 최소한의 MySQL 서버만으로 서비스할 수 있는 구조를 설명합니다.
고성능/고효율의 MySQL 스케일링 기법을 공유합니다. 대규모 게임 서비스에서 이미 검증된 것은 안 비밀~
목차
1. 기본적인 아기텍처
2. ProxySQL을 이용한 더 나은 아키텍처
3. 최종 아키텍처
대상
- 대규모 게임 서비스에 MySQL을 사용한 경험에 관심 있는 분
- ProxySQL에 관심이 있는 서버 개발자 혹은 DBA
- 게임 서버 개발 과정에서 DB 쪽을 유연하게 구성하고 싶은 분
■관련 동영상: https://youtu.be/8Eb_n7JA1yA
MySQL Database Architectures - InnoDB ReplicaSet & ClusterKenny Gryp
Following MySQL InnoDB Cluster as our first, fully integrated MySQL High Availability solution based on Group Replication, MySQL Shell 8.0.19 includes MySQL InnoDB ReplicaSet which delivers another complete solution, this time based on MySQL Replication.
The basic idea for InnoDB ReplicaSet is to do the same for classic MySQL Replication as InnoDB Cluster did for Group Replication. We take a strong technology that is very powerful but can be complex, and provide an easy-to-use AdminAPI for it in the MySQL Shell.
In just a few easy to use Shell commands, a MySQL Replication database architecture can be configured from scratch including:
Data provisioning using MySQL CLONE, Setting up replication,
Performing manual switchover/failover.
Spring integration을 통해_살펴본_메시징_세계Wangeun Lee
[스프링캠프 2015] Spring Integration을 통해 살펴본 메시징 세계 발표자료 입니다.
예제 소스 저장소는 프리젠테이션 안에 링크 걸어놨습니다.
감사합니다.
-------------------------------------------------------------------
우리는 늘 누군가와 소통(Communication)을 합니다. 소통을 통하여 누군가에게 일을 시키기도 하고 내가 일을 받기도 합니다. 애플리케이션도 마찬가지로 이기종간의 애플리케이션끼리 데이터로 소통을 하며 할 일을 서로 분산 처리할 상황이 발생하기도 합니다.
이런 분산 처리 이전에는 소통이 전제되어야 합니다. 애플리케이션 간 소통에 대한 고민은 선구자들에 의해 Enterprise Integration Patterns로 탄생되었으며 Spring에서도 그 패턴화의 추상화 일원으로 Spring Integration을 탄생시켰습니다.
이 강연에서는 Spring Integration을 통해 애플리케이션 간에 어떻게 쉽고 편하게(?) 소통을 할 수 있게 되었는지 살펴보며 예제와 사례를 통해 Spring Integration 입문에 도움을 주고자 합니다.
(BDT309) Data Science & Best Practices for Apache Spark on Amazon EMRAmazon Web Services
Organizations need to perform increasingly complex analysis on their data — streaming analytics, ad-hoc querying and predictive analytics — in order to get better customer insights and actionable business intelligence. However, the growing data volume, speed, and complexity of diverse data formats make current tools inadequate or difficult to use. Apache Spark has recently emerged as the framework of choice to address these challenges. Spark is a general-purpose processing framework that follows a DAG model and also provides high-level APIs, making it more flexible and easier to use than MapReduce. Thanks to its use of in-memory datasets (RDDs), embedded libraries, fault-tolerance, and support for a variety of programming languages, Apache Spark enables developers to implement and scale far more complex big data use cases, including real-time data processing, interactive querying, graph computations and predictive analytics. In this session, we present a technical deep dive on Spark running on Amazon EMR. You learn why Spark is great for ad-hoc interactive analysis and real-time stream processing, how to deploy and tune scalable clusters running Spark on Amazon EMR, how to use EMRFS with Spark to query data directly in Amazon S3, and best practices and patterns for Spark on Amazon EMR.
Apresentação sobre NestJS, framework Node.js e Typescript, com explicação do seu funcionamento e exemplos práticos de como utiliza-lo para criar aplicações do lado servidor.
Evento: OpenLabs 2019 - VI Conferência de Tecnologia da Região Serrana - 31/03/2019
Disponível também em: https://github.com/openlabsconf/openlabs-vi
Site do evento: http://openlabsconf.com.br/
Introduction to failover clustering with sql serverEduardo Castro
In this presentation we review the basic requirements to install a SQL Server Failover Cluster.
Regards,
Eduardo Castro Martinez
http://ecastrom.blogspot.com
http://comunidadwindows.org
기존에 저희 회사에서 사용하던 모니터링은 Zabbix 였습니다.
컨테이너 모니터링 부분으로 옮겨가면서 변화가 필요하였고, 이에 대해서 프로메테우스를 활용한 모니터링 방법을 자연스럽게 고민하게 되었습니다.
이에 이영주님께서 테크세션을 진행하였고, 이에 발표자료를 올립니다.
5개의 부분으로 구성되어 있으며, 세팅 방법에 대한 내용까지 포함합니다.
01. Prometheus?
02. Usage
03. Alertmanager
04. Cluster
05. Performance
※다운로드하시면 더 선명한 자료를 보실 수 있습니다.
동접 200만 명이 접속할 수백 대의 게임 서버가 최소한의 MySQL 서버만으로 서비스할 수 있는 구조를 설명합니다.
고성능/고효율의 MySQL 스케일링 기법을 공유합니다. 대규모 게임 서비스에서 이미 검증된 것은 안 비밀~
목차
1. 기본적인 아기텍처
2. ProxySQL을 이용한 더 나은 아키텍처
3. 최종 아키텍처
대상
- 대규모 게임 서비스에 MySQL을 사용한 경험에 관심 있는 분
- ProxySQL에 관심이 있는 서버 개발자 혹은 DBA
- 게임 서버 개발 과정에서 DB 쪽을 유연하게 구성하고 싶은 분
■관련 동영상: https://youtu.be/8Eb_n7JA1yA
MySQL Database Architectures - InnoDB ReplicaSet & ClusterKenny Gryp
Following MySQL InnoDB Cluster as our first, fully integrated MySQL High Availability solution based on Group Replication, MySQL Shell 8.0.19 includes MySQL InnoDB ReplicaSet which delivers another complete solution, this time based on MySQL Replication.
The basic idea for InnoDB ReplicaSet is to do the same for classic MySQL Replication as InnoDB Cluster did for Group Replication. We take a strong technology that is very powerful but can be complex, and provide an easy-to-use AdminAPI for it in the MySQL Shell.
In just a few easy to use Shell commands, a MySQL Replication database architecture can be configured from scratch including:
Data provisioning using MySQL CLONE, Setting up replication,
Performing manual switchover/failover.
Spring integration을 통해_살펴본_메시징_세계Wangeun Lee
[스프링캠프 2015] Spring Integration을 통해 살펴본 메시징 세계 발표자료 입니다.
예제 소스 저장소는 프리젠테이션 안에 링크 걸어놨습니다.
감사합니다.
-------------------------------------------------------------------
우리는 늘 누군가와 소통(Communication)을 합니다. 소통을 통하여 누군가에게 일을 시키기도 하고 내가 일을 받기도 합니다. 애플리케이션도 마찬가지로 이기종간의 애플리케이션끼리 데이터로 소통을 하며 할 일을 서로 분산 처리할 상황이 발생하기도 합니다.
이런 분산 처리 이전에는 소통이 전제되어야 합니다. 애플리케이션 간 소통에 대한 고민은 선구자들에 의해 Enterprise Integration Patterns로 탄생되었으며 Spring에서도 그 패턴화의 추상화 일원으로 Spring Integration을 탄생시켰습니다.
이 강연에서는 Spring Integration을 통해 애플리케이션 간에 어떻게 쉽고 편하게(?) 소통을 할 수 있게 되었는지 살펴보며 예제와 사례를 통해 Spring Integration 입문에 도움을 주고자 합니다.
(BDT309) Data Science & Best Practices for Apache Spark on Amazon EMRAmazon Web Services
Organizations need to perform increasingly complex analysis on their data — streaming analytics, ad-hoc querying and predictive analytics — in order to get better customer insights and actionable business intelligence. However, the growing data volume, speed, and complexity of diverse data formats make current tools inadequate or difficult to use. Apache Spark has recently emerged as the framework of choice to address these challenges. Spark is a general-purpose processing framework that follows a DAG model and also provides high-level APIs, making it more flexible and easier to use than MapReduce. Thanks to its use of in-memory datasets (RDDs), embedded libraries, fault-tolerance, and support for a variety of programming languages, Apache Spark enables developers to implement and scale far more complex big data use cases, including real-time data processing, interactive querying, graph computations and predictive analytics. In this session, we present a technical deep dive on Spark running on Amazon EMR. You learn why Spark is great for ad-hoc interactive analysis and real-time stream processing, how to deploy and tune scalable clusters running Spark on Amazon EMR, how to use EMRFS with Spark to query data directly in Amazon S3, and best practices and patterns for Spark on Amazon EMR.
Apresentação sobre NestJS, framework Node.js e Typescript, com explicação do seu funcionamento e exemplos práticos de como utiliza-lo para criar aplicações do lado servidor.
Evento: OpenLabs 2019 - VI Conferência de Tecnologia da Região Serrana - 31/03/2019
Disponível também em: https://github.com/openlabsconf/openlabs-vi
Site do evento: http://openlabsconf.com.br/
node.js를 처음 접하는 개발자를 위한 스터디 자료입니다.
실습 위주로, 간단한 웹 페이지를 만들어 보는 것을 목표로 하며,
express를 활용하기에 앞서, node.js 기본 API만으로 GET/POST 처리 방식을 알아봅니다.
내용의 깊이가 있지는 않으며, 단지 node.js의 입문을 위한 가벼운 수준으로 내용이 구성되었습니다.
Source - https://www.openmaru.io/?p=3228
쿠버네티스를 이해하기 위해서 반드시 알아야 하는 개념이 불변의 인프라스트럭처 입니다.
불변과 가변의 인프라스트럭처에서 서버 운영 방법을 비교하여 개념과 장점을 설명 드립니다.
이제 IT 환경이 왜 머신 중심에서 애플리케이션 중심으로 전환되고 있는지에 대해서 살펴보겠습니다.
불변의 인프라는 고급 도자기 찻잔과 비유 될 수 있습니다.
일회용 종이컵은 한번 쓰면 버리고, 구매하는데도 큰 부담이 없습니다.
하지만 고급 도자기 찻잔은 어떨까요?애지중지 관리하며 깨지면 모든 것이 끝나게 됩니다.
빌표 자료 다운로드 - https://www.openmaru.io/?p=3186
쿠버네티스 와 컨테이너 기술은 변경이 불가능한 Immutable Infrastructure ( 불변의 인프라스트럭처 ) 가 가장 중요한 개념입니다.
우리는 MS Windows 나 Apple MacOS 를 사용하면서 보안, 안정성 그리고 성능 등의 이유로 OS (운영체제) 를 자주 업데이트 합니다.
OS는 시간이 지남에 따라 내용이나 설정이 수시로 변화가 발생하며, 새로운 애플리케이션를 설치할 때는 레지스트리도 변경합니다.
지금까지 사용하던 많은 소프트웨어들은 업데이트나 설정 변경 등을 반복하면서 최신 상태로 유지하였고, 서버용 소프트웨어도 유사한 방법으로 관리하였습니다.
이렇게 서버가 시간 지남에 따라 상태가 변해가고 이로 인해 문제가 발생하는 것을 컨피규레이션 디리프트 ( Configuration Drift ) 라고 합니다.
불변의 인프라스트럭처 인 Immutable Infrastructure 에 대한 개념을 , 이해하기 위해서 가변의 인프라인 Mutable Infrastructure 와 중요한 특징들을 비교해 보겠습니다.
발표 자료 다운로드 - https://www.openmaru.io/?p=3171
컨테이너의 역사는 1979년에 Chroot로부터 시작합니다.
2008년에는 지금 컨테이너기술의 바탕이 되는 LXC , 리눅스 컨테이너기술을 IBM 에서 발표합니다.
2013년에 오픈 소스로 도커가 발표되면서, IT 업계 컨테이너 기술에 대한 폭발적인 관심을 이끌게 됩니다.
발표자료 다운로드 - https://www.openmaru.io/?p=3132
쿠버네티스 는 구글이 개발하고 오픈소스로 공개한 컨테이너 오케스트레이션 도구 입니다.
구글이 어떤 과정을 통하여 쿠버네티스를 만들었고, 내부적으로 컨테이너 기술을 어떻게 사용하고 있는 지에 대해서 설명하겠습니다.
source : https://www.openmaru.io/?p=3076
가상화 기술은 하이퍼바이저를 통해 하드웨어를 에뮬레이션하여 가상 이미지 마다 게스트 운영 체제를 사용합니다.
컨테이너 는 애플리케이션 수준으로 구성되며 커널 하나를 공유하는 여러 OS 가상화하기 때문에 OS가 포함되지 않아 크기가 작고, 고속으로 시작과 정지 합니다.
그 차이점을 보다 구체적으로 알아보겠습니다.
컨테이너 를 들으면 무엇이 떠오르나요?
항구나 공항 등에서 보는 직 물류 업계에서 사용되는 컨테이너가 떠오르 실 것입니다
컨테이너는 내용물을 하나씩 이동하는 것이 아니라 박스에 수하물을 담아 통째로 이동하기 때문에 편리한 물류 수단입니다.
물류 분야에서 컨테이너를 통해 화물 배송의 표준화가 이루진 것처럼 IT분야에서도 컨테이너기술을 통해 애플리케이션 배포에 대한 표준화를 이루었습니다.
프라이빗 클라우드 이던 퍼불릭 클라우드 이던 컨테이너로 패키징되어 있으면 어디 서든 애플리케이션을 실행할 수 있습니다.
VM과 컨테이너 상에서 Apache & Tomcat 설치, 실행 그리고 배포 데모
데모 요약 : 수작업으로 진행하는 가상화환경과 OCP 환경(Dockerfile)의
간단한 apache / tomcat 설치 및 실행하는 비교 데모 입니다.
데모 내용 : 물리서버 또는 가상화 환경에서 수작업으로 진행했던 배포 작업들이 컨테이너 환경에서 원클릭으로 배포하는 영상을 보여주는 데모입니다. 컨테이너 환경에서의
배포는 수작업으로 하는 배포 대비 상상이상의 시간을 아낄 수 있습니다.
오픈나루 데모 URL : http://www.opennaru.com/seminar/%ed%81%b4%eb%9d%bc%ec%9a%b0%eb%93%9c-%eb%84%a4%ec%9d%b4%ed%8b%b0%eb%b8%8c-%eb%8d%b0%eb%aa%a8-%ec%9c%a0%ed%8a%9c%eb%b8%8c/
오픈나루 비대면 워크샵 URL : http://www.opennaru.com/seminar/%ed%81%b4%eb%9d%bc%ec%9a%b0%eb%93%9c-%eb%84%a4%ec%9d%b4%ed%8b%b0%eb%b8%8c-%ec%9b%8c%ed%81%ac%ec%83%b5/
가상화 기술 VS 컨테이너의 집적도 비교 데모
데모 요약 : 동일한 환경에서 가상화환경과 OCP 환경의 자원 사용 효율성 비교
데모 내용 : 동일한 조건의 머신에서 가상화 환경 대비 필요한 자원만 구동되는
컨테이너 환경을 보여 주는 영상입니다.
컨테이너 환경으로 필요한 자원만 이용하여 낭비되는 비용을 줄일 수 있습니다.
또한 여유 자원을 확보할 수 있기에 긴급상황 시 안정적으로 운영이 가능합니다.
오픈나루 데모 URL : http://www.opennaru.com/seminar/%ed%81%b4%eb%9d%bc%ec%9a%b0%eb%93%9c-%eb%84%a4%ec%9d%b4%ed%8b%b0%eb%b8%8c-%eb%8d%b0%eb%aa%a8-%ec%9c%a0%ed%8a%9c%eb%b8%8c/
오픈나루 비대면 워크샵 URL : http://www.opennaru.com/seminar/%ed%81%b4%eb%9d%bc%ec%9a%b0%eb%93%9c-%eb%84%a4%ec%9d%b4%ed%8b%b0%eb%b8%8c-%ec%9b%8c%ed%81%ac%ec%83%b5/
PaaS 환경에서 기업 메신저 서비스 10분 만에 구축하기 데모
데모 요약 : 저장소와 Openshift Cluster가 구성된 상태에서
Openshift 빌드/배포를 구현하는 간단한 방법을 시연
데모 내용 : openshift환경에서 기업용 메신저 서비스 mattermost 어플리케이션을
배포하는 데모 영상입니다.
오픈나루 데모 URL : http://www.opennaru.com/seminar/%ed%81%b4%eb%9d%bc%ec%9a%b0%eb%93%9c-%eb%84%a4%ec%9d%b4%ed%8b%b0%eb%b8%8c-%eb%8d%b0%eb%aa%a8-%ec%9c%a0%ed%8a%9c%eb%b8%8c/
오픈나루 비대면 워크샵 URL : http://www.opennaru.com/seminar/%ed%81%b4%eb%9d%bc%ec%9a%b0%eb%93%9c-%eb%84%a4%ec%9d%b4%ed%8b%b0%eb%b8%8c-%ec%9b%8c%ed%81%ac%ec%83%b5/
마이크로서비스 아키텍처 (MSA) 데모
데모 요약 : bookinfo 어플리케이션 내 '별점주기', '리뷰 달기' 등 각 기능의 서버가 MSA로
따로 운영되는데 이번 데모에서는 별점주기 기능을 테스트로 장애 발생시켜 전체 홈페이지를
셧다운하는 것이 아닌 하나의 '별점주기' 기능 서버만 지원하는 영상
데모 내용 : 기존 전통적인 모놀리식 구조같은 하나의 큰 어플리케이션을 운영하는 것
대비 어플리케이션을 마이크로 형태로 나누어 변경과 조합이 가능하도록 하면서
효율적인 운영을 보여주는 데모 영상입니다.
오픈나루 데모 URL : http://www.opennaru.com/seminar/%ed%81%b4%eb%9d%bc%ec%9a%b0%eb%93%9c-%eb%84%a4%ec%9d%b4%ed%8b%b0%eb%b8%8c-%eb%8d%b0%eb%aa%a8-%ec%9c%a0%ed%8a%9c%eb%b8%8c/
오픈나루 비대면 워크샵 URL : http://www.opennaru.com/seminar/%ed%81%b4%eb%9d%bc%ec%9a%b0%eb%93%9c-%eb%84%a4%ec%9d%b4%ed%8b%b0%eb%b8%8c-%ec%9b%8c%ed%81%ac%ec%83%b5/
로그 통합 데모
데모 요약 : 컨테이너 환경에서 Kibana를 통해 로그를 보는것과 예전방식으로 보는것의 차이점 비교 데모
데모 내용 : 흩어져 있고 쉽게 사라지는 모든 컨테이너를 모니터링 하여 장애 발생 시 원인을 정확히 파악할 수 있는 데모영상입니다.
OPENMARU APM 솔루션으로 장애 발생 원인과 Troubleshooting으로 어플리케이션을 안정적으로 운영할 수 있습니다.
오픈나루 데모 URL : http://www.opennaru.com/seminar/%ed%81%b4%eb%9d%bc%ec%9a%b0%eb%93%9c-%eb%84%a4%ec%9d%b4%ed%8b%b0%eb%b8%8c-%eb%8d%b0%eb%aa%a8-%ec%9c%a0%ed%8a%9c%eb%b8%8c/
오픈나루 비대면 워크샵 URL : http://www.opennaru.com/seminar/%ed%81%b4%eb%9d%bc%ec%9a%b0%eb%93%9c-%eb%84%a4%ec%9d%b4%ed%8b%b0%eb%b8%8c-%ec%9b%8c%ed%81%ac%ec%83%b5/
컨테이너 상에서의 서비스 무중단 배포 방법 비교 데모
데모 요약 : 무중단 배포 구현을 위해 OCP 상에 어떤설정이
어디에 추가되어야 하는지 항목 별로 살펴보는 데모
데모 내용 : 개발자, 운영자 다 모여서 같은 시간에 배포가 아닌 시간 및 조직에 구애받지 않고
자유롭게 배포할 수 있는 데모 영상입니다. 이런 자유로운 배포 기능은 실제 서비스 운영상의 장애를 50% 가까이 줄일 수 있습니다.
오픈나루 데모 URL : http://www.opennaru.com/seminar/%ed%81%b4%eb%9d%bc%ec%9a%b0%eb%93%9c-%eb%84%a4%ec%9d%b4%ed%8b%b0%eb%b8%8c-%eb%8d%b0%eb%aa%a8-%ec%9c%a0%ed%8a%9c%eb%b8%8c/
오픈나루 비대면 워크샵 URL : http://www.opennaru.com/seminar/%ed%81%b4%eb%9d%bc%ec%9a%b0%eb%93%9c-%eb%84%a4%ec%9d%b4%ed%8b%b0%eb%b8%8c-%ec%9b%8c%ed%81%ac%ec%83%b5/
source : https://www.openmaru.io/?p=2251
자동 확장 자원 풀 – Auto Scaling 데모
데모 요약 : 부하 증가 시 기존의 수작업으로 진행하던 자원확장을 Openshift의 Auto Scailing 으로 자동으로 확장하는 것을 보여주는 데모
데모 내용 : 레거시 환경에서 특정업무 부하 증가 시 수작업으로 진행되었던 확장기능이 Openshift 솔루션으로 자동확장되는 기능을 보여주는 데모영상입니다.
Openshift 자동확장 기능으로 안정적인 서비스 운영을 할 수 있습니다.
멀티 애플리케이션 환경에서 부하에 따른 자동 자원 할당 데모
데모 요약 : 한정된 리소스를 얼마나 효율적으로 사용할 수 있는지를 시연
데모 내용 : 멀티 환경에서 Openshift는 자동으로 자원을 할당하여 운영하는데 있어서
인적자원 투입 최소화와 보다 안정적으로 운영할 수 있게 도움을 주는 데모 영상입니다.
오픈나루 데모 URL : http://www.opennaru.com/seminar/%ed%81%b4%eb%9d%bc%ec%9a%b0%eb%93%9c-%eb%84%a4%ec%9d%b4%ed%8b%b0%eb%b8%8c-%eb%8d%b0%eb%aa%a8-%ec%9c%a0%ed%8a%9c%eb%b8%8c/
오픈나루 비대면 워크샵 URL : http://www.opennaru.com/seminar/%ed%81%b4%eb%9d%bc%ec%9a%b0%eb%93%9c-%eb%84%a4%ec%9d%b4%ed%8b%b0%eb%b8%8c-%ec%9b%8c%ed%81%ac%ec%83%b5/
PaaS 환경에서 전자 정부 프레임워크 배포 데모
데모 요약: 저장소와 OCP가 기 구성된 상태에서
오픈시프트 빌드/배포를 구현하는 간단한 방법을 시연
데모 내용 : 전자정부프레임웍 기반의 애플리케이션을
OCP 환경에서 배포하는 방법을 보여주는 데모영상입니다.
오픈나루 데모 URL : http://www.opennaru.com/seminar/%ed%81%b4%eb%9d%bc%ec%9a%b0%eb%93%9c-%eb%84%a4%ec%9d%b4%ed%8b%b0%eb%b8%8c-%eb%8d%b0%eb%aa%a8-%ec%9c%a0%ed%8a%9c%eb%b8%8c/
오픈나루 비대면 워크샵 URL : http://www.opennaru.com/seminar/%ed%81%b4%eb%9d%bc%ec%9a%b0%eb%93%9c-%eb%84%a4%ec%9d%b4%ed%8b%b0%eb%b8%8c-%ec%9b%8c%ed%81%ac%ec%83%b5/
PaaS 환경에서 오픈 소스 워드프레스 구축하기 데모
데모 요약 : 저장소와 Openshift Cluster가 구성된 상태에서
Openshift 빌드/배포를 구현하는 간단한 방법을 시연
데모 내용 : openshift환경에서 Wordpress를 배포하는 데모 영상입니다.
오픈나루 데모 URL : http://www.opennaru.com/seminar/%ed%81%b4%eb%9d%bc%ec%9a%b0%eb%93%9c-%eb%84%a4%ec%9d%b4%ed%8b%b0%eb%b8%8c-%eb%8d%b0%eb%aa%a8-%ec%9c%a0%ed%8a%9c%eb%b8%8c/
오픈나루 비대면 워크샵 URL : http://www.opennaru.com/seminar/%ed%81%b4%eb%9d%bc%ec%9a%b0%eb%93%9c-%eb%84%a4%ec%9d%b4%ed%8b%b0%eb%b8%8c-%ec%9b%8c%ed%81%ac%ec%83%b5/
PaaS 환경에서 다중 사용자 머신 러닝 플랫폼 구축 데모
데모 요약 : 다수의 사용자에게 동일한 개발환경을 제공하는 방법을 보여줍니다.
이제 개별적으로 환경구성을 위해 시간을 소비하지 않아도 됩니다.
데모 내용 : 기존 레거시 환경 대비 PaaS 환경에서 신규 어플리케이션을 안전하고 신속하게 구축,
배포할 수 있는 데모 영상입니다. 신규 기업용 메신저 도입 시 빠르면 10분안에 구축할 수 있습니다.
오픈나루 데모 URL : http://www.opennaru.com/seminar/%ed%81%b4%eb%9d%bc%ec%9a%b0%eb%93%9c-%eb%84%a4%ec%9d%b4%ed%8b%b0%eb%b8%8c-%eb%8d%b0%eb%aa%a8-%ec%9c%a0%ed%8a%9c%eb%b8%8c/
오픈나루 비대면 워크샵 URL : http://www.opennaru.com/seminar/%ed%81%b4%eb%9d%bc%ec%9a%b0%eb%93%9c-%eb%84%a4%ec%9d%b4%ed%8b%b0%eb%b8%8c-%ec%9b%8c%ed%81%ac%ec%83%b5/
13. HTTP/2 제약 사항
• ALPN (Application Layer Protocol Negotiation)
TLS (Transport Layer Security) 기반의 확장
• JAVA EE 7 (JDK 8) 에서는 ALPN을 사용 불가
별도의 ALPN 구현체 설치/설정
• JDK 9 에서 포함
• OpenSSL 업그레이드
• Undetow (JBoss EAP 7.1)
• 별도의 설치/설정 과정 없이 JDK 8 에서 가능
14. • Chrome Browser plugins
• HTTP/2 and SPDY indicator
• HTTP Request Headers
어떻게 HTTP/2를 사용하는 사이트인지 알 수 있을까?
Source: https://chrome.google.com/webstore/detail/http2-and-spdy-indicator/mpbpobfflnpcgagjijhmgnchggcjblin
15.
16. • 웹시스템의 발전에 따른 요구사항
• 다양한 SNS 서비스의 등장으로 실시간 메세징이나 푸쉬 기술 요구
• 여러 사용자가 함께 문서를 편집하고 참조할 수 있는 글로벌 협업 도구에 대한 요
구
• 웹이나 모바일 환경에서 옥션 서비스나 스포츠 이벤트 , 금융정보에 대한 실시간
제공 등 실시간 정보 제공에 대한 요구 증가
• 실시간 서버 푸쉬나 커뮤니케이션을 위한 기술 요구
• 기존 HTTP를 이용한 클라이언트와 서버 간의 양방향 통신에 대한 요구 증가
• 기존 HTTP를 사용하여 클라이언트가 일정 간격으로 서버에 요청하는
풀링 방식으로는 새로운 요구를 수용하기 어려움
• Comet 이나 Server Sent Event 방식이 있었으나 기술적인 한계와 개방성에 대한
이슈 때문에 많이 확산되지 않음
배경
17. • 기존 방식이고, HTTP 통신에 의지 할 수 밖에 없다
• 동시 연결 수가 많으면 메모리 등의 자원을 많이 소모한다.
(1 요청 / 응답 헤더 자체는 수 KB)
• HTTP 는 비상태 프로토콜
• 별도로 세션 관리를 해야 함
• 매번 요청되는 Header 크기
기존 HTTP의 문제점
GET /resources/public-data/ HTTP/1.1
Host: bar.other
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1b3pre) Gecko/20081130
Minefield/3.1b3pre
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
Referer: http://foo.example/examples/access-control/simpleXSInvocation.html
Origin: http://foo.example
400 Bytes over!
18. 왜 고속 통신이 가능한가
송신 데이터가 "Hello, world "의 경우
• HTTP
• 12 bytes + 400 bytes
→ 412 Bytes
• 97.1 % 이 Header
• WebSocket
• 12 bytes + 6 bytes
→ 18 Bytes
• 33.3 % 이 Header
같은 문자열을 보낼 때 약 23 배의 감소
26. Undertow
• JAVA 언어로 작성된 웹서버
• JBoss 가 후원하고, JBoss EAP 7, Wildfly 가 사용하는 기본 웹서버
https://www.techempower.com/benchmarks/#section=data-r14&hw=ph&test=json
31. Load Balancer
• IP 주소 한개에 여러 도메인으로 웹사이트 운영하기
• Virtual Host
NameVirtualHostHandler vhostHandler =
Handlers.virtualHost();
ProxyHandler wikiProxyHandler =
ProxyHandler.builder().setProxyClient(
new LoadBalancingProxyClient().addHost(
new URI("http://localhost:8280"))).build();
vhostHandler.addHost("wiki.opennaru.com",
wikiProxyHandler);
<host name="other-host" alias="www.opennaru.com">
32. Load Balancer
• 원격 서버에서 문서를 가져와 클라이언트에 전달하는 Proxy
• Reverse Proxy
LoadBalancingProxyClient
loadBalancer = new
LoadBalancingProxyClient()
.addHost(new
URI("http://localhost:8180
"));
<location name="/"
handler="myproxy"/>
<reverse-proxy
name="myproxy">
<host
name="http://localhost:8180"
path="/"/>
</reverse-proxy>
33. Load Balancer
• URL 을 조작 할 수 있는 강력 한 모듈
정규식, 표현식을 통해 강력하게 이용
• Rewrite
• Redirect
PredicatesHandler predicatesHandler = Handlers.predicates(
PredicatedHandlersParser.parse(“” +
“path-prefix('/ddakker') -> {rewrite['/opennaru'];} n" +
"regex('/test(.*)') -> {rewrite['/abc/test/${1}'];} n" +
"regex('/redirect1$') -> redirect['/redirect1/ed'] n" +
<filter-ref name="rewrite-test" predicate="regex('^/test(.*)$')"/>
<rewrite name="rewrite-test" target="/abc/test$${1}.jsp"
redirect="false"/>
34. Load Balancer
• 클라이언트의 IP 주소에 따라 접근 제어
• IP Address Access Controller
• WEB-INF/undertow-handlers.conf
IPAddressAccessControlHandler handler = new
IPAddressAccessControlHandler()
.setDefaultAllow(false)
.addAllow(“localhost") .addAllow("127.0.0.1"));
<expression-filter name="ipAccess" expression="path-prefix[/] ->
ip-access-control[default-allow=false, acl={' localhost allow',
'127.0.0.1 allow'}]"/>
35. Load Balancer
• WAS Clustring 을 위한 cluster
• mod_cluster
• 동적 구성
• 서버 측 부하 계산
• 세밀한 생명주기 제어
• http, https, ajp 지원
final ModCluster modCluster
=
ModCluster.builder(worker).b
uild();
modCluster.start();
server.start();
<filter-ref name="b_eap71" /
<mod-cluster name="b_eap71" advertise-socket-
binding="modcluster" management-socket-binding="http"
enable-http2="true" security-key="app" />
37. • Load Balancer
• 세밀한 제어
(Suspend, Resume, Gracefull or mod_cluster mgr)
• Only with JAVA
• Static Content
• Native Module 필요 없음
WAS 역할의 변화
JAVA
Server #1Server #1
L4 Switch
Server #3
Undertow (EAP)
instance11
Undertow (EAP)
instance12
Undertow (EAP)
Balancer #1
Server #4
Undertow (EAP)
instance21
Undertow (EAP)
instance22
Undertow (EAP)
Balancer #2M
O
D
C
L
U
S
T
E
R
38. “살아 남는 종(種)은 강한 종이 아니고,
또 우수한 종도 아니다.
변화에 적응하는 종이다. ”
- Charles Darwin, 1809
39.
40. 제품이나 서비스에 관한 문의
콜 센터 :02-469-5426 ( 휴대폰 : 010-2243-3394 )
전자메일:sales@opennaru.com
Editor's Notes
우선 문제점
Header User-Agent
성능을 향상 시키기위한 노력
그러한 노력들은
Multiplexed -> 다중 전송 기술로서 기존 Connection Keep-Alive, Pipelining 의 대안
Google SPDY 가 오픈소스화 하면서 기반 기술이 JAVA EE 스펙으로 포함
SSL 인증서 비용
HTTP Upgrade
어플리케이션 계층 프로토콜 협상
1. Ajax, Hidden iFrmae, 더 나아가 Comet
이렇게 기존의 HTTP는 이러한 실시간성 요구사항을 충족 시킬 수 없었습니다.
비 연결형이기도 하고, 불필요한 오버헤드가 있기 때문입니다.
그런데도 불구하고, 이러한 기술은 활성화가 잘 되지 못 했습니다.
구조의 복잡도 증가
러닝 커브
1. 하지만 이제는 이러한 노력을 덜 해도 되는 시점이 왔다
1. Spring boot undertow
1. 왜 Tomcat을 버리고 Undertow? Module -> logging, web, datasource, cluster,
또 Undertow 의 특징으로는 로드 발란서이기도 합니다.
그럼 성능은 그렇다 쳐도 기존 웹서버들의 기능들은 제공 하느냐?
한번 살펴보도록 하겠습니다.
Undertow 는 JBoss EAP 에서 사용되는 웹서버라고 앞서 설명 했습니다.
따라서 모든 Undertow 설정들을 JBoss EAP 설정파일 레벨에서도 동일하게 이용 할 수 있습니다.
devops, WEB-INF/handlers.conf
모두 java
C Native Module 필요 없이 성능 보장
Static content -> WAS -> 장점 -> 배포 시 WEB/WAS 버전 차이 문제
mod_cluster 동적 관리
현재 웹서버, 서블릿 엔진은 이미 성능 적인 측면에서 거의 평준화 되었습니다.
하지만 앞서 설명한 세밀한 유입 제어가 뒷받침 되지 않는다면 배포나 특정 서버 작업 시에 안정성을 확보하기 어렵습니다.
하지만 Undertow 에서 제공하는 세밀한 유입 제어 부분을 활용한다면 배포 및 특정 작업 시에도 안정성을 확보하여 더욱 품질 좋은 서비스를 할 수 있게 될 것입니다.
그렇기에 저희는 엔터프라이즈 환경에서 Undertow, JBoss EAP 를 적극 추천합니다.