Amazon EKS를 위한 AWS CDK와 CDK8s 활용법 - 염지원, 김광영 AWS 솔루션즈 아키텍트 :: AWS Summit Seou...Amazon Web Services Korea
Amazon Elastic Kubernetes Service (Amazon EKS)를 통하여 오픈소스 컨테이너 오케이스트레이션 도구인 Kubernetes를 신규 도입하고자 하는 고객들이 폭발적으로 늘어나고 있습니다. AWS Cloud Development Kit (AWS CDK) 그리고 CDK8s 를 활용하여 개발자에게 친숙한 프로그래밍 언어로 Amazon EKS를 정의하고 Kubernetes 어플리케이션을 정의하는 데에 활용하는 방법을 소개하여, 새롭게 Amazon EKS를 사용해보고자 하는 고객들이 도입을 가속화할 수 있는 방법을 제시합니다.
OpenSearch는 배포형 오픈 소스 검색과 분석 제품군으로 실시간 애플리케이션 모니터링, 로그 분석 및 웹 사이트 검색과 같이 다양한 사용 사례에 사용됩니다. OpenSearch는 데이터 탐색을 쉽게 도와주는 통합 시각화 도구 OpenSearch와 함께 뛰어난 확장성을 지닌 시스템을 제공하여 대량 데이터 볼륨에 빠르게 액세스 및 응답합니다. 이 세션에서는 실제 동작 구조에 대한 설명을 바탕으로 최적화를 하기 위한 방법과 운영상에 발생할 수 있는 이슈에 대해서 알아봅니다.
사내 발표자료 겸 만들었는데, ECS Fargate를 이용하실 분들이라면, 편리하게 쓰실 수 있도록 최대한 상세하게 만들어 보았습니다.
사실 CloudFormation 등 배포는 좀 더 편리하게 할 수 있지만, 회사 사정도 있고, 제가 일단 그런 기술을 너무 늦게 알았기 때문에 다루지는 않았습니다.
- 동영상 보기: https://www.youtube.com/watch?v=Rq4I57eqIp4
Amazon RDS 프록시는 Amazon Relational Database Service (RDS)를 위한 완전 관리형 고가용성 데이터베이스 프록시로, 애플리케이션의 확장 성, 데이터베이스 장애에 대한 탄력성 및 보안 성을 향상시킬 수 있습니다. (2020년 6월 서울 리전 출시)
Amazon EKS를 위한 AWS CDK와 CDK8s 활용법 - 염지원, 김광영 AWS 솔루션즈 아키텍트 :: AWS Summit Seou...Amazon Web Services Korea
Amazon Elastic Kubernetes Service (Amazon EKS)를 통하여 오픈소스 컨테이너 오케이스트레이션 도구인 Kubernetes를 신규 도입하고자 하는 고객들이 폭발적으로 늘어나고 있습니다. AWS Cloud Development Kit (AWS CDK) 그리고 CDK8s 를 활용하여 개발자에게 친숙한 프로그래밍 언어로 Amazon EKS를 정의하고 Kubernetes 어플리케이션을 정의하는 데에 활용하는 방법을 소개하여, 새롭게 Amazon EKS를 사용해보고자 하는 고객들이 도입을 가속화할 수 있는 방법을 제시합니다.
OpenSearch는 배포형 오픈 소스 검색과 분석 제품군으로 실시간 애플리케이션 모니터링, 로그 분석 및 웹 사이트 검색과 같이 다양한 사용 사례에 사용됩니다. OpenSearch는 데이터 탐색을 쉽게 도와주는 통합 시각화 도구 OpenSearch와 함께 뛰어난 확장성을 지닌 시스템을 제공하여 대량 데이터 볼륨에 빠르게 액세스 및 응답합니다. 이 세션에서는 실제 동작 구조에 대한 설명을 바탕으로 최적화를 하기 위한 방법과 운영상에 발생할 수 있는 이슈에 대해서 알아봅니다.
사내 발표자료 겸 만들었는데, ECS Fargate를 이용하실 분들이라면, 편리하게 쓰실 수 있도록 최대한 상세하게 만들어 보았습니다.
사실 CloudFormation 등 배포는 좀 더 편리하게 할 수 있지만, 회사 사정도 있고, 제가 일단 그런 기술을 너무 늦게 알았기 때문에 다루지는 않았습니다.
- 동영상 보기: https://www.youtube.com/watch?v=Rq4I57eqIp4
Amazon RDS 프록시는 Amazon Relational Database Service (RDS)를 위한 완전 관리형 고가용성 데이터베이스 프록시로, 애플리케이션의 확장 성, 데이터베이스 장애에 대한 탄력성 및 보안 성을 향상시킬 수 있습니다. (2020년 6월 서울 리전 출시)
데브옵스 엔지니어를 위한 신규 운영 서비스 - 김필중, AWS 개발 전문 솔루션즈 아키텍트 / 김현민, 메가존클라우드 솔루션즈 아키텍트 :...Amazon Web Services Korea
AWS re:Invent에서 소개된 개발에서 운영까지 이어지는 파이프라인 전체에 대한 최신 기술을 통해, 사일로를 분리하고 협업을 향상하는 방법을 소개합니다. 거버넌스 제어를 위한 AWS Control Tower, 코드 수준에서의 위험성 사전 탐지를 위한 Amazon CodeGuru Reviewer, 더 빠르고 풍부한 기능의 앱 제작을 위한 AWS Amplify Studio, IaC를 위한 AWS Cloud Development Kit, 그리고 운영 효율성을 향상 시키는 Amazon CloudWatch의 신규 기능을 알아봅니다.
발표 영상 - https://www.youtube.com/watch?v=GHQMFVLRl4U
Amazon EC2 T4g, M6g, C6g 및 R6g 인스턴스는 애플리케이션 서버, 마이크로 서비스를 포함한 광범위한 워크로드에 대해 유사한 x86 기반 인스턴스보다 최대 40% 더 나은 가격 대비 성능을 제공합니다.
아름답고 유연한 데이터 파이프라인 구축을 위한 Amazon Managed Workflow for Apache Airflow - 유다니엘 A...Amazon Web Services Korea
Apache Airflow는 복잡한 데이터 처리 파이프라인의 전체적인 프로세스를 자동화하기 위한 워크플로우 관리 플랫폼이며 오픈 소스 커뮤니티에서 활발하게 기여하고 있는 top-level 프로젝트 입니다. AWS는 최근에 Amazon Managed Workflow for Apache Airflow (MWAA) 서비스를 정식 출시하였고, 본 강연에서는 Apache Airflow 및 MWAA를 소개하고 어떻게 AWS 서비스와 연동하여 데이터 처리 워크플로우를 구축할 수 있는지 데모를 통해 알려 드립니다.
***** DevOps Training : https://www.edureka.co/devops *****
This DevOps Tutorial on DevOps Interview Questions and Answers ( DevOps Interview Blog : https://goo.gl/mfTAVJ ) will help you to prepare yourself for DevOps interviews. Learn about the most important DevOps Engineer interview questions and answers and know what will set you apart in the interview process. Below are the topics covered in this DevOps Interview Questions and Answers Tutorial:
1) Basic DevOps Interview Questions
2) Source Code Management Interview Questions
3) Continuous Integration Interview Questions
4) Continuous Deployment Interview Questions
5) Continuous Monitoring Interview Questions
DevOps playlist here: http://goo.gl/O2vo13
DevOps Podcast: https://castbox.fm/channel/id1684800
AWS Glue는 고객이 분석을 위해 손쉽게 데이터를 준비하고 로드할 수 있게 지원하는 완전관리형 ETL(추출, 변환 및 로드) 서비스입니다. AWS 관리 콘솔에서 클릭 몇 번으로 ETL 작업을 생성하고 실행할 수 있습니다. 빅데이터 분석 시 다양한 데이터 소스에 대한 전처리 작업을 할 때, 별도의 데이터 처리용 서버나 인프라를 관리할 필요가 없습니다. 본 세션에서는 지난 5월 서울 리전에 출시한 Glue 서비스에 대한 자세한 소개와 함께 다양한 활용 팁을 데모와 함께 소개해 드립니다.
연사: 모두싸인 CTO 정승현
행사 제목: 아마존-부산클라우드혁신센터 Startup Member Day
내용 요약: '모두싸인'이라는 전자계약 서비스를 만드는 로아팩토리가 MVP(최소기능제품)부터 12만 명의 회원 서비스가 되기까지의 경험으로 보는 스타트업의 성장 단계 별 AWS 아키텍처 진화와 비용절감 과정
elasticsearch의 기본적인 working에 대한 발표자료입니다.
특히나 logging보다는 '검색 서비스'에 포커싱된 자료이기 때문에 '한글검색' 으로 고통받으실 분들을 위한 기초 자료라 생각해주시면 감사하겠습니다.
맞지않는 정보와 오탈자 그리고 의문점이 든다면 dydwls121200@gmail.com으로 언제든지 가벼운 마음으로 메일주세요. 저 또한 성장시키는 일이기도 하니까요. 환영합니다.
데브시스터즈의 Cookie Run: OvenBreak 에 적용된 Kubernetes 기반 다중 개발 서버 환경 구축 시스템에 대한 발표입니다.
Container orchestration 기반 개발 환경 구축 시스템의 필요성과, 왜 Kubernetes를 선택했는지, Kubernetes의 개념과 유용한 기능들을 다룹니다. 아울러 구축한 시스템에 대한 데모와, 작업했던 항목들에 대해 리뷰합니다.
*NDC17 발표에서는 데모 동영상을 사용했으나, 슬라이드 캡쳐로 대신합니다.
DevOps vs Agile | DevOps Tutorial For Beginners | DevOps Training | EdurekaEdureka!
***** DevOps Masters Program : https://www.edureka.co/masters-progra... *****
This is a short tutorial by Edureka on DevOps vs Agile, which will help you understand the fundamental difference between DevOps and Agile software development strategies.
디지털 해적들로부터 영상 콘텐츠 보호하기 – 황윤상 AWS 솔루션즈 아키텍트, 김준호 잉카엔트웍스 매니저:: AWS Cloud Week ...Amazon Web Services Korea
영상 콘텐츠의 가장 큰 적은 바로 Digital Piracy입니다. 이 세션에서는 AWS를 이용하여 미디어 서비스를 제공하고자 할 때, 어떻게 소중한 미디어 콘텐츠를 보호할 수 있는지 살펴봅니다. Amazon Cloudfront의 OAI 및 Signed URL, Cookie를 사용하여 콘텐츠 접근을 제어하는 방법과 AWS Elemental 서비스가 제공하는 DRM 프로토콜인 SPEKE를 살펴본 후, DRM 파트너인 잉카엔트웍스의 김준호 매니저를 모시고 실제 DRM 서비스의 구성 방법과 데모, 적용 사례를 확인해 봅니다.
토스증권은 Blitzscaling을 꿈꾸며 여정을 준비하고 있습니다.
효율적인 서비스 제공과 안정적인 운영을 위해 선택했던 경험들을 공유하고, 빠른 변화에 민첩하게 대응하는 증권팀의 비전과 높은 생산성을 만들기 위해서 선택했던 AWS 클라우드 사용 경험 중 멀티캐스트 기능을 활용한 주식 실시간 시세 제공 서비스에 대해서 구축 사례를 중심으로 소개하겠습니다.
데브옵스 엔지니어를 위한 신규 운영 서비스 - 김필중, AWS 개발 전문 솔루션즈 아키텍트 / 김현민, 메가존클라우드 솔루션즈 아키텍트 :...Amazon Web Services Korea
AWS re:Invent에서 소개된 개발에서 운영까지 이어지는 파이프라인 전체에 대한 최신 기술을 통해, 사일로를 분리하고 협업을 향상하는 방법을 소개합니다. 거버넌스 제어를 위한 AWS Control Tower, 코드 수준에서의 위험성 사전 탐지를 위한 Amazon CodeGuru Reviewer, 더 빠르고 풍부한 기능의 앱 제작을 위한 AWS Amplify Studio, IaC를 위한 AWS Cloud Development Kit, 그리고 운영 효율성을 향상 시키는 Amazon CloudWatch의 신규 기능을 알아봅니다.
발표 영상 - https://www.youtube.com/watch?v=GHQMFVLRl4U
Amazon EC2 T4g, M6g, C6g 및 R6g 인스턴스는 애플리케이션 서버, 마이크로 서비스를 포함한 광범위한 워크로드에 대해 유사한 x86 기반 인스턴스보다 최대 40% 더 나은 가격 대비 성능을 제공합니다.
아름답고 유연한 데이터 파이프라인 구축을 위한 Amazon Managed Workflow for Apache Airflow - 유다니엘 A...Amazon Web Services Korea
Apache Airflow는 복잡한 데이터 처리 파이프라인의 전체적인 프로세스를 자동화하기 위한 워크플로우 관리 플랫폼이며 오픈 소스 커뮤니티에서 활발하게 기여하고 있는 top-level 프로젝트 입니다. AWS는 최근에 Amazon Managed Workflow for Apache Airflow (MWAA) 서비스를 정식 출시하였고, 본 강연에서는 Apache Airflow 및 MWAA를 소개하고 어떻게 AWS 서비스와 연동하여 데이터 처리 워크플로우를 구축할 수 있는지 데모를 통해 알려 드립니다.
***** DevOps Training : https://www.edureka.co/devops *****
This DevOps Tutorial on DevOps Interview Questions and Answers ( DevOps Interview Blog : https://goo.gl/mfTAVJ ) will help you to prepare yourself for DevOps interviews. Learn about the most important DevOps Engineer interview questions and answers and know what will set you apart in the interview process. Below are the topics covered in this DevOps Interview Questions and Answers Tutorial:
1) Basic DevOps Interview Questions
2) Source Code Management Interview Questions
3) Continuous Integration Interview Questions
4) Continuous Deployment Interview Questions
5) Continuous Monitoring Interview Questions
DevOps playlist here: http://goo.gl/O2vo13
DevOps Podcast: https://castbox.fm/channel/id1684800
AWS Glue는 고객이 분석을 위해 손쉽게 데이터를 준비하고 로드할 수 있게 지원하는 완전관리형 ETL(추출, 변환 및 로드) 서비스입니다. AWS 관리 콘솔에서 클릭 몇 번으로 ETL 작업을 생성하고 실행할 수 있습니다. 빅데이터 분석 시 다양한 데이터 소스에 대한 전처리 작업을 할 때, 별도의 데이터 처리용 서버나 인프라를 관리할 필요가 없습니다. 본 세션에서는 지난 5월 서울 리전에 출시한 Glue 서비스에 대한 자세한 소개와 함께 다양한 활용 팁을 데모와 함께 소개해 드립니다.
연사: 모두싸인 CTO 정승현
행사 제목: 아마존-부산클라우드혁신센터 Startup Member Day
내용 요약: '모두싸인'이라는 전자계약 서비스를 만드는 로아팩토리가 MVP(최소기능제품)부터 12만 명의 회원 서비스가 되기까지의 경험으로 보는 스타트업의 성장 단계 별 AWS 아키텍처 진화와 비용절감 과정
elasticsearch의 기본적인 working에 대한 발표자료입니다.
특히나 logging보다는 '검색 서비스'에 포커싱된 자료이기 때문에 '한글검색' 으로 고통받으실 분들을 위한 기초 자료라 생각해주시면 감사하겠습니다.
맞지않는 정보와 오탈자 그리고 의문점이 든다면 dydwls121200@gmail.com으로 언제든지 가벼운 마음으로 메일주세요. 저 또한 성장시키는 일이기도 하니까요. 환영합니다.
데브시스터즈의 Cookie Run: OvenBreak 에 적용된 Kubernetes 기반 다중 개발 서버 환경 구축 시스템에 대한 발표입니다.
Container orchestration 기반 개발 환경 구축 시스템의 필요성과, 왜 Kubernetes를 선택했는지, Kubernetes의 개념과 유용한 기능들을 다룹니다. 아울러 구축한 시스템에 대한 데모와, 작업했던 항목들에 대해 리뷰합니다.
*NDC17 발표에서는 데모 동영상을 사용했으나, 슬라이드 캡쳐로 대신합니다.
DevOps vs Agile | DevOps Tutorial For Beginners | DevOps Training | EdurekaEdureka!
***** DevOps Masters Program : https://www.edureka.co/masters-progra... *****
This is a short tutorial by Edureka on DevOps vs Agile, which will help you understand the fundamental difference between DevOps and Agile software development strategies.
디지털 해적들로부터 영상 콘텐츠 보호하기 – 황윤상 AWS 솔루션즈 아키텍트, 김준호 잉카엔트웍스 매니저:: AWS Cloud Week ...Amazon Web Services Korea
영상 콘텐츠의 가장 큰 적은 바로 Digital Piracy입니다. 이 세션에서는 AWS를 이용하여 미디어 서비스를 제공하고자 할 때, 어떻게 소중한 미디어 콘텐츠를 보호할 수 있는지 살펴봅니다. Amazon Cloudfront의 OAI 및 Signed URL, Cookie를 사용하여 콘텐츠 접근을 제어하는 방법과 AWS Elemental 서비스가 제공하는 DRM 프로토콜인 SPEKE를 살펴본 후, DRM 파트너인 잉카엔트웍스의 김준호 매니저를 모시고 실제 DRM 서비스의 구성 방법과 데모, 적용 사례를 확인해 봅니다.
토스증권은 Blitzscaling을 꿈꾸며 여정을 준비하고 있습니다.
효율적인 서비스 제공과 안정적인 운영을 위해 선택했던 경험들을 공유하고, 빠른 변화에 민첩하게 대응하는 증권팀의 비전과 높은 생산성을 만들기 위해서 선택했던 AWS 클라우드 사용 경험 중 멀티캐스트 기능을 활용한 주식 실시간 시세 제공 서비스에 대해서 구축 사례를 중심으로 소개하겠습니다.
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발Jeongkyu Shin
머신러닝 및 데이터 과학 분야의 컴퓨팅 수요는 해가 갈수록 급증하고 있습니다. 이와 더불어 분산처리 기술, 데이터 파이프라이닝 및 개발 환경 스택 관리 등의 관련된 다양한 이슈들 또한 엄청나게 늘어나고 있습니다. 머신러닝 모델의 기하급수적인 모델 복잡도 증가 추세와 마찬가지로, 모델 학습을 위한 환경 관리 또한 갈수록 복잡도가 높아지는 추세입니다.
이 세션에서는 이러한 문제를 해결하기 위해 python 언어 기반의 분산처리 스케쥴링/오케스트레이션 미들웨어 플랫폼을 개발한 4년간의 과정에서 겪은 다양한 문제들에 대해 다룹니다. 2015년 컨테이너 기반의 고밀도 분산처리 플랫폼 설계 및 프로토타이핑 과정을 PyCon KR에서 발표한 이후, 실제 구현 및 오픈소스화, 안정화를 거치며 겪은 다양한 기술적/비기술적 문제들에 대한 경험을 공유합니다.
기술적으로는 최근 몇 년 간의 클러스터 플랫폼 관련 기술의 진보와 함께 탄생한 다양한 도구들과, 이러한 도구들을 python 기반으로 엮어내기 위해 사용하고 개발한 다양한 오픈소스들을 다룹니다. Python 기반의 컨테이너 스케쥴링 및 오케스트레이션 과정의 구현과, 다양한 프로그래밍 언어로 만든 SDK를 graphQL을 이용하여 연동하는 과정에서의 몇몇 유의점을 설명합니다. 아울러 python 기반의 SDK를 다양한 언어로 포팅했던 경험을 간단하게 안내합니다.
플랫폼을 개발하는 중 등장한 TensorFlow, PyTorch 등의 다양한 머신러닝 프레임워크들을 도입하며 겪은 문제와 해결 과정에 대해서도 나눕니다. 연구 분야에는 Python 2.7 기반의 프레임워크들이 여전히 많습니다. 이러한 프레임워크 및 라이브러리의 지원을 위하여 Python 2 기반의 프레임워크와 Python 3.7로 구현한 컨테이너 인터페이스를 단일 컨테이너 환경에 중복 빌드 및 상호 간섭 없이 공존시키기 위해 개발한 아이디어를 소개합니다.
마지막으로 Python 기반의 프레임워크를 개발, 배포 및 상용화 하는 과정에서 겪은 다양한 어려움을 소개합니다. 솔루션을 배포 및 보급할 때 겪는 다양한 런타임, 하드웨어 환경 및 개인 정보 보호를 위한 폐쇄망 대상의 디플로이 등에 대응하기 위하여 Python 응용프로그램을 단독 실행용으로 패키징하는 과정에서 겪은 팁들을 설명합니다. 또한 GUI 빌드 및 Python, Go 및 C++을 함께 사용한 드라이버 가상화 레이어 개발 등의 내용도 살짝 다룹니다.
이 슬라이드는 PyCon KR 2019의 발표 슬라이드입니다. ( https://www.pycon.kr/program/talk-detail?id=138 )
오픈 소스 Actor Framework 인 Akka.NET 을 통해 온라인 게임 서버를 어떻게 구현할 수 있는지를 설명합니다. Actor Model 에 대한 기본 이해부터 Scale-out 가능한 게임 서버 구축까지 전반적인 내용에 대해 알 수 있습니다. 설명을 위해 클라이언트는 Unity3D 를 사용할 예정입니다.
Clova Extension 음성기반 게임 기획 및 설계 / FaaS를 이용한 개발 Clova Platform
Session 1: Clova Extension 음성기반 게임 기획 및 설계
- Clova Extension 개요 및 사례소개
- 구구단놀이 기획 및 설계
- 나라이름 맞추기 기획 및 설계
세션 2: Ncloud FaaS를 이용한 서버없이 Clova Extension 개발
- FaaS 개요 및 사용방법
- 구구단놀이 게임 Extension 구현
- 나라이름 맞추기 Extension 구현
Just Model It 이벤트에서 사용할 Backend.AI 에 관한 소개입니다. Backend.AI의 개괄, 주요 기능 및 사용예들을 다룹니다. 또한 Backend.AI 를 이용한 End-to-end ML model 개발 시나리오도 소개합니다.
An Introduction to Backend.AI to use in Just Model It event. It covers the overview of Backend.AI, its main features and examples. It also introduces the scenario of developing end-to-end ML model using Backend.AI.
5. 1. Clova Platform
•처음부터 외부 오픈을 전제로 설계
•내부/외부 사용자간 동일 코드, 동일 서버, 동일 운영
•Device 개발자를 위한 Clova Interface Connect, CIC
•Service 개발자를 위한 Clova Extension Kit, CEK
6. 1. Clova Platform
Clova Interface Connect
•하드웨어 개발자가 제품에 Clova Interface 연결 가능
•Public API 및 SDK (Java/Android/C++) 제공
•음성, Vision(예정)을 단일 인터페이스로 제공
•저전력 등의 IoT환경에도 적용 가능
7. 1. Clova Platform
Clova Extension Kit
•Service 및 Content를 Clova에 손쉽게 연결
•간단한 설정과 REST API 연동으로 자연어 기반 서비스 개발
•Public API / SDK(예정, NodeJS/Python/Java/Ruby/..)
•Step by Step 형식의 Builder 및 온라인 테스트 환경 제공
8. 1. Clova Platform
Open Platform
•네이버, 라인이 사용하는 Platform 그대로 공개
•Extension Marketplace
•최고 수준의 SDK / API 문서 지원
•인식, 합성, Vision 개별 API 제공
10. 2. Architecture & Tech Stack
Challenge
•요청을 받아서 분석하기 전까진 무슨 내용인지 알 수 없는 API
•Latency에 매우 민감
•하나의 요청을 처리 하기 위해 무수히 많은 서비스와 연결된다.
•요청을 받는 와중에라도 서버가 Interrupt 하거나 응답을 줘야 함
12. 2. Architecture & Tech Stack
Protocol
•연결 신뢰성이 있어야 하거나, 확보할 수 있어야 하고
•Latency에 민감한 대응을 할 수 있어야 하고
•민감 정보(음성/사진)를 다루기 때문에 보안성이 우수해야 하며
•Open Platform을 지향하므로, Client 구현이 쉬워야 하는
•Protocol을 선택해야 했음
13. 2. Architecture & Tech Stack
HTTP/2
•가장 최적의 Protocol
•Header 압축, Multiplexing등을 통한 Latency 감소
•Binary Frame based Protocol
•Single TCP Connection & Ping-Pong Mechanism
•TLS Based Security
14. 2. Architecture & Tech Stack
HTTP/2
•HTTP/2는 한개의 Connection에 여러개의 논리적인 연결, Stream으로 구성
•순서와 방향이 섞여도 문제 없는 구성
Image from https://docs.google.com/presentation/d/1r7QXGYOLCh4fcUq0jDdDwKJWNqWK1o4xMtYpKZCJYjM/present?slide=id.gae999cde7_0_40
15. 2. Architecture & Tech Stack
HTTP/2
•하나의 Stream은 Header와 Data Frame으로 구성
•End Flag가 지정될때까진 몇개의 Frame 이라도 전송 가능
•한 Stream 내에서 Request -> Response 구조인건 HTTP/1.X와 동일
Image from https://docs.google.com/presentation/d/1r7QXGYOLCh4fcUq0jDdDwKJWNqWK1o4xMtYpKZCJYjM/present?slide=id.gae999cde7_0_40
16. DATA FRAME
(200ms PCM)
2. Architecture & Tech Stack
HTTP/2
•여러개의 Frame으로 구성할 수 있다는 점을 이용해서 Streaming & Downsteram 활용
•음성인식의 경우 한 Frame을 200ms 단위로 구성해서 서버에서 Streaming 받아 처리
POST Request Stream: /v1/events
DATA FRAME
(200ms PCM)
DATA FRAME
(200ms PCM)
DATA FRAME
(200ms PCM)
DATA FRAME
(200ms PCM)
DATA FRAME
(200ms PCM)
DATA FRAME
(200ms PCM)
DA
(2
17. 2. Architecture & Tech Stack
HTTP/2
•Client의 요청 중, 혹은 요청하지 않은 경우에도 서버가 먼저 응답을 줘야하는 경우
•HTTP/2에 기본으로 포함된 Push는 Client 요청 시, 요청하지 않은 내용을 함께 전달
•따라서, 응답을 종료하지 않고(End Flag) 필요시 DATA Frame을 계속 전달하는 방법 사용
HEADERS (END_FLAG)
DATA
DATA
DATA
DATA
18. 2. Architecture & Tech Stack
HTTP/2
•하지만.. 어려운 점
•Client 구현이 다른 검토 대상 (web socket, …) 대비 미성숙
•Downstream은 curl 같은 도구로 테스트 하기 어렵다
•생각보다 HTTP/1.X와 다르지만 비슷해 보여서 개발자들의 학습 비용
•그래도 세상은 빠르게 HTTP/2로 전환 중!
19. 2. Architecture & Tech Stack
Golang
•개발/설계 당시 언어 및 제반 환경에 대한 조사 후 Golang 선택
•회사에 기존에 쌓여있는 C/C++ 기반의 자산을 활용하기 쉽고
•검토 당시 가장 성숙한 HTTP/2 서버 구현 보유
•또한, Platform 특성상 대부분의 Workload는 I/O에서 발생
20. 2. Architecture & Tech Stack
Golang
•Cgo는 무척 편리한 도구이고 강력하지만
•생각보다 cost가 높고, 개발 환경 구축, 빌드, 배포 등에 지연 요소
•기존 자산을 활용해 시간을 벌고, 단계적으로 Native go 구현으로 이전 중
21. 2. Architecture & Tech Stack
Monitoring
•복잡하게 연관된 시스템에 대한 모니터링
•특정 API에 대한 성공/실패에 대한 점검 만으로는 의미가 없거나 부족함
•“알 수 없는” 시스템을 검사해야 하는, Blackbox Testing
22. 2. Architecture & Tech Stack
Monitoring
•End To End Blackbox Testing
•“자연어 입력”과 “기대 결과”를 검사
•“자연어 입력”은 텍스트 혹은 음성
•그런데 “오늘 날씨 어때?”나 “지금 몇시야?”에 대한 “기대 결과”는?
•오늘날씨알려줘에 대해 네이버에서 검색해봤어요. 오늘날씨왜이렇게더운가요?? 남극의눈물
이녹아서그래요 내일은비가올까요 안올까요 쨍쨍할까요 날씨좋은날이태원해밀털호텔수영장에
다녀왔어요구름씨의블로그추천꾹눌르세요 더 많은 결과는 네이버 클로바 앱에서 확인해보세요.
23. 2. Architecture & Tech Stack
Monitoring
•Test 목적의 CIC Client 개발
•Input에 대해서 Client의 작동을 모사
•Input/Output에 대해 Python으로 DSL 작성
24. 2. Architecture & Tech Stack
Monitoring
•Why Python? Go에 비해 문자열 조작이 편하고 DSL을 만들기 쉬웠음
•Python-Hyper
•다양한 경우와 작동에 대한 테스트
•24/365 끝없는 Regression Test, Alerting
26. 3. Clova Interface Connect
Interface Connect
•새로운 Human Interface 에 대한 표준 API 제공
•음성, (예정) Vision, ….
•Downstream Channel과 Event Request로 구성
•요청(Event)을 보내서 명령(Directive)을 수신
27. 3. Clova Interface Connect
Interface Connect - Auth
•한국/일본간 인증 기반과 체계가 다름(Naver/Line)
•기술 체계도 미묘하게 다르고 법률 문제
•Platform 사용자에게 oAuth 2.0 기반의 단일 Interface를 제공하고 Backend 추상화
•각 국가별 Transparent 한 API 제공
28. 3. Clova Interface Connect
Interface Connect - Downstream Channel
•모든 CIC Client는 반드시 1개의 Downstream Channel을 유지
•Clova Platform에서 먼저 전달하는 명령(Directive)
•HTTP/2 Multiplexing
29. 3. Clova Interface Connect
Event
•Clova Client에서 올려 보내는 모든 요청
•요청의 내용이 아닌 요청의 종류에 대응
•음성 인식 요청, 영상 인식 요청, 재생 상태 보고, 버튼 눌림 보고, ...
•요청 ID
•Wake-Up Word 같은 각종 Interruption 요소
30. 3. Clova Interface Connect
•모든 인식 요청은 요청 발생 시점에 ID를 Client
에서 생성
•서버는 해당 인식 요청에 대한 모든 Directive
에 요청 ID를 Tag
•만약 Client가 마지막에 가지고 있던 요청 ID와
응답의 요청 ID가 다르면 해당 요청 무시
31. 3. Clova Interface Connect
Directive
•Client의 Event에 대응하여 Platform에서 지시하는 명령
•TTS 재생, 음악 재생, 화면 표시, ...
•Client는 일종의 Execution Engine으로 작동
•Client Queue를 규정
32. 3. Clova Interface Connect
Directive - 표준화
•‘작동’의 표준적인 지시에 대한 문제
•Software/Hardware적 환경이 모든 Client마다 다름
•화면 유무, 해상도 차이, 음악 재생 능력 차이 등
•Directive는 특정 표현을 규정하는게 아닌 의미를 규정
33. 3. Clova Interface Connect
Directive - Template
•디바이스의 물리적 특성은 모두 다르고 강제 불가
•고 수준의 Markup Langauge는 구현 부담이 큼
•표현 대신 의미를 기술하는 Template 선택
•Background, Image, MainText, SubText, RefText
34. 3. Clova Interface Connect
Context & Event Driven
•“멈처줘” - Ambiguity 문제
•Client는 Event에 항상 자신의 “현재 상태 정보”를 전달
•Platform 에서는 상태 정보를 참고하여 Ambiguity 처리
•알람 상태, 음악 재생 상태, 음소거 상태 등
35. 3. Clova Interface Connect
Context & Event Driven
•Client가 Directive를 수행하리란 보장이 없거나, 언제 수행할 지 알수 없음
•따라서, 지시 -> Callback Event -> 지시 -> Callback Event … 의 반복 구성
•주로 Directive의 수행 성공/실패를 전달 받음
•혹은 Timeout과 결합하여 Action 수행 실패 자체를 파악
36. 3. Clova Interface Connect
Intent
“Clova, 아이유 노래 틀어줘”
Music.Play
•자연어, 행동등을 {Namespace}.{Name} 의 형태로 표현
•표현이 다르지만 같은 (틀어줘, 틀어, 들려줘, ...)의미는 같
은 Intent로 표현
•Intent 마다 개별 Parameter(Slot)를 가질 수 있음
Slot: Artist
37. 3. Clova Interface Connect
Intent Routing
•Platform은 Intent를 기준으로 실제 요청을 처리할 서비스를 선택
•Intent에 대한 입력과 출력 포맷을 표준화
Music.Play
Naver Music
Music Service
Radio Service
Intent
Router
38. 3. Clova Interface Connect
Backward Compatibility
•Embedded 환경에 많이 배포되는 특성상 하위 호환성이 무척 중요
•Text 기반의 Protocol, Semantic Versioning을 통한 Version 협상
•Field는 항상 추가만 수행, 적정 시점에서 Interface 분리
•Client 는 Unknown Field/Directive는 정책에 따라 무시 대응 (Silently Ignore)
40. 4. Clova Extension Kit
Interaction Model
•자연어를 어떻게 이해하고 분석할지 정의
•명령 의도별 (Intent) 예시 문장과 변수 (Slot) 태깅
“Clova, Dash에게 앞으로 가라 해”
Dash.Move
{Direction: Forward}
Intent
Slots
43. 4. Clova Extension Kit
Interaction Model
•통계 기반 언어 분석
•(예정) Multi turn 지원
•주요 기본 표현을 위한 Builtin Intent 지원
•화폐, 주소 같은 기본적인 Slot 사전 지원
44. 4. Clova Extension Kit
Request Model
•모든 요청은 JSON Request & Response
•(예정) HTTPS Required
•사용자, 기기에 대한 정보 제공
•사용자와의 대화에 따른 생명주기
•Session 제공
45. 4. Clova Extension Kit
Request Model - Context
•사용자, 기기에 대한 정보
•사용자 식별자, 기기 식별자
•기기가 지원하는 기능 (음악 재생 가능 여부 등)
•기기의 상태, ex) 볼륨 크기, 음소거 여부 등
46. 4. Clova Extension Kit
Request Model - Lifecycle
•Extension 은 실행되어, 요청을 받고, 종료되는 생명주기를 가짐
•“Clova, Dash 열어줘” -> “Clova, Dash 종료”
•Extension 스스로도 종료 여부를 결정할 수 있음
•한 생명 주기 내에서 Clova Platform에 정보를 저장할 수 있는 Session 제공
Launch
Intent
End
47. 4. Clova Extension Kit
Request Model - Event Request
•기본적으로 Extension은 사용자의 명시적인 실행이 있는 경우에만 호출 됨
•단, 사용자가 명령하지 않았어도 Extension이 호출되는 경우가 있음
•Ex) “음악이 재생됨” / “음악이 정지됨”
48. 4. Clova Extension Kit
Response Model
•다양한 환경의 기기에 응답을 제공
•단순 응답외에 행동을 제어해야 하는 경우
•좀 더 복잡한 처리를 위한, 추가 입력 요청
49. 4. Clova Extension Kit
Response Model - TTS, Template
•Extension은 음성 안내를 위한 “답변” 문구를 제공
•음성 안내는 간단한 상태와, 자세한 상태 두가지로 제공 가능
•음성외 10여 종의 Template 제공
•CIC Device들은, 각 Device의 환경에 따라 Template 해석 및 처리
•Template은 표현 형태가 아닌 데이터를 기술
50. 4. Clova Extension Kit
Response Model - Directive Model
•요청한 CIC Device의 작동을 제어
•ex) AudioPlayer.Play
•모든 Device가 지정한 Directive를 수행을 보장하지 않음
•Extension은 Device에 해당 작동을 요청하고, Device는 그 작동의 수행 여부를 응답
51. 4. Clova Extension Kit
Response Model - Multi Turn
•Extension이 추가적인 입력을 원할 경우
•ex) “내일 몇시에 알려 드릴까요?”
•Extension이 종료를 희망하지 않을 경우 CIC는 무조건 추가 입력을 시도
•CEK Session을 통해서 대화 상태 관리
52. 4. Clova Extension Kit
Builder
•웹 기반의 Extension 관리 및 개발/테스트 도구
•호출어, 연동 정보(Extension 서버 주소), 언어 모델, Market 정보 등 입력
•Interaction Model 편집 및 테스트 도구
•호출어 등에 대한 리뷰 진행