유용하(indy.jones) / kakao corp.(톡메시징파트)
---
JVM 기반 언어의 코틀린은 자바의 생태계와 완전히 호환되면서도 간결하고 안전한 코드를 위한 문법을 가진 언어다. 이런 장점으로 최근 안드로이드를 중심으로 점차 자바를 대체해 가고 있지만, 아직 안정성과 성능에 보수적인 서버 분야에서 자바의 지위는 견고해 보인다. 하지만 기존의 자바 기반 프레임웍과도 완벽히 호환되는 코틀린은 서버사이드에서도 도입하지 않을 이유가 없으며 성공적인 도입 사례가 늘어날수록 그 추세는 가속화될 것이다. 현재 카카오톡의 일부 서버들도 코틀린으로 개발되어 대량의 요청을 안정적으로 서비스하고 있고 그 영역은 점점 늘어나고 있다. 이 세션에서는 다양한 서버 분야의 코틀린 도입에 도움이 될 만한 카카오톡 서버의 코틀린 적용 경험을 공유한다.
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안SANG WON PARK
Apache Kafak의 빅데이터 아키텍처에서 역할이 점차 커지고, 중요한 비중을 차지하게 되면서, 성능에 대한 고민도 늘어나고 있다.
다양한 프로젝트를 진행하면서 Apache Kafka를 모니터링 하기 위해 필요한 Metrics들을 이해하고, 이를 최적화 하기 위한 Configruation 설정을 정리해 보았다.
[Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안]
Apache Kafka 성능 모니터링에 필요한 metrics에 대해 이해하고, 4가지 관점(처리량, 지연, Durability, 가용성)에서 성능을 최적화 하는 방안을 정리함. Kafka를 구성하는 3개 모듈(Producer, Broker, Consumer)별로 성능 최적화를 위한 …
[Apache Kafka 모니터링을 위한 Metrics 이해]
Apache Kafka의 상태를 모니터링 하기 위해서는 4개(System(OS), Producer, Broker, Consumer)에서 발생하는 metrics들을 살펴봐야 한다.
이번 글에서는 JVM에서 제공하는 JMX metrics를 중심으로 producer/broker/consumer의 지표를 정리하였다.
모든 지표를 정리하진 않았고, 내 관점에서 유의미한 지표들을 중심으로 이해한 내용임
[Apache Kafka 성능 Configuration 최적화]
성능목표를 4개로 구분(Throughtput, Latency, Durability, Avalibility)하고, 각 목표에 따라 어떤 Kafka configuration의 조정을 어떻게 해야하는지 정리하였다.
튜닝한 파라미터를 적용한 후, 성능테스트를 수행하면서 추출된 Metrics를 모니터링하여 현재 업무에 최적화 되도록 최적화를 수행하는 것이 필요하다.
Distributed Load Testing with k6 - DevOps BarcelonaThijs Feryn
Slides for My "Distributed Load Testing with k6" presentation at DevOps Barcelona 2023.
In this presentation I introduce k6, the open source load testing tool by Grafana Labs.
I show how to write tests in Javascript, how to run the tests using the CLI tools and how to measure the right results and configure the right checks, metrics & thresholds.
In terms of distributed testing, I also talk about the built-in API that allows you to remotely trigger tests from different machines and how to centralize and visualize real-time metrics using Prometheus and Grafana.
See https://feryn.eu/speaking/distributed-load-testing-k6-devops-barcelona-23/ for more information.
어떻게 하면 배포 프로세스를 빠르게 개선할 수 있을까요?
git branch를 푸시하고 개별 테스트 서버를 만드려면 어떻게 해야 할까요?
쿠버네티스와 GitOps, Argo CD를 이용한 배포 방법을 소개 합니다.
Open Infrastructure & Cloud Native Days Korea 2019 발표자료
원본 슬라이드 다운로드 - http://bit.ly/subicura-gitops
Auto-Pilot for Apache Spark Using Machine LearningDatabricks
At Qubole, users run Spark at scale on cloud (900+ concurrent nodes). At such scale, for efficiently running SLA critical jobs, tuning Spark configurations is essential. But it continues to be a difficult undertaking, largely driven by trial and error. In this talk, we will address the problem of auto-tuning SQL workloads on Spark. The same technique can also be adapted for non-SQL Spark workloads. In our earlier work[1], we proposed a model based on simple rules and insights. It was simple yet effective at optimizing queries and finding the right instance types to run queries. However, with respect to auto tuning Spark configurations we saw scope of improvement. On exploration, we found previous works addressing auto-tuning using Machine learning techniques. One major drawback of the simple model[1] is that it cannot use multiple runs of query for improving recommendation, whereas the major drawback with Machine Learning techniques is that it lacks domain specific knowledge. Hence, we decided to combine both techniques. Our auto-tuner interacts with both models to arrive at good configurations. Once user selects a query to auto tune, the next configuration is computed from models and the query is run with it. Metrics from event log of the run is fed back to models to obtain next configuration. Auto-tuner will continue exploring good configurations until it meets the fixed budget specified by the user. We found that in practice, this method gives much better configurations compared to configurations chosen even by experts on real workload and converges soon to optimal configuration. In this talk, we will present a novel ML model technique and the way it was combined with our earlier approach. Results on real workload will be presented along with limitations and challenges in productionizing them. [1] Margoor et al,'Automatic Tuning of SQL-on-Hadoop Engines' 2018,IEEE CLOUD
유용하(indy.jones) / kakao corp.(톡메시징파트)
---
JVM 기반 언어의 코틀린은 자바의 생태계와 완전히 호환되면서도 간결하고 안전한 코드를 위한 문법을 가진 언어다. 이런 장점으로 최근 안드로이드를 중심으로 점차 자바를 대체해 가고 있지만, 아직 안정성과 성능에 보수적인 서버 분야에서 자바의 지위는 견고해 보인다. 하지만 기존의 자바 기반 프레임웍과도 완벽히 호환되는 코틀린은 서버사이드에서도 도입하지 않을 이유가 없으며 성공적인 도입 사례가 늘어날수록 그 추세는 가속화될 것이다. 현재 카카오톡의 일부 서버들도 코틀린으로 개발되어 대량의 요청을 안정적으로 서비스하고 있고 그 영역은 점점 늘어나고 있다. 이 세션에서는 다양한 서버 분야의 코틀린 도입에 도움이 될 만한 카카오톡 서버의 코틀린 적용 경험을 공유한다.
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안SANG WON PARK
Apache Kafak의 빅데이터 아키텍처에서 역할이 점차 커지고, 중요한 비중을 차지하게 되면서, 성능에 대한 고민도 늘어나고 있다.
다양한 프로젝트를 진행하면서 Apache Kafka를 모니터링 하기 위해 필요한 Metrics들을 이해하고, 이를 최적화 하기 위한 Configruation 설정을 정리해 보았다.
[Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안]
Apache Kafka 성능 모니터링에 필요한 metrics에 대해 이해하고, 4가지 관점(처리량, 지연, Durability, 가용성)에서 성능을 최적화 하는 방안을 정리함. Kafka를 구성하는 3개 모듈(Producer, Broker, Consumer)별로 성능 최적화를 위한 …
[Apache Kafka 모니터링을 위한 Metrics 이해]
Apache Kafka의 상태를 모니터링 하기 위해서는 4개(System(OS), Producer, Broker, Consumer)에서 발생하는 metrics들을 살펴봐야 한다.
이번 글에서는 JVM에서 제공하는 JMX metrics를 중심으로 producer/broker/consumer의 지표를 정리하였다.
모든 지표를 정리하진 않았고, 내 관점에서 유의미한 지표들을 중심으로 이해한 내용임
[Apache Kafka 성능 Configuration 최적화]
성능목표를 4개로 구분(Throughtput, Latency, Durability, Avalibility)하고, 각 목표에 따라 어떤 Kafka configuration의 조정을 어떻게 해야하는지 정리하였다.
튜닝한 파라미터를 적용한 후, 성능테스트를 수행하면서 추출된 Metrics를 모니터링하여 현재 업무에 최적화 되도록 최적화를 수행하는 것이 필요하다.
Distributed Load Testing with k6 - DevOps BarcelonaThijs Feryn
Slides for My "Distributed Load Testing with k6" presentation at DevOps Barcelona 2023.
In this presentation I introduce k6, the open source load testing tool by Grafana Labs.
I show how to write tests in Javascript, how to run the tests using the CLI tools and how to measure the right results and configure the right checks, metrics & thresholds.
In terms of distributed testing, I also talk about the built-in API that allows you to remotely trigger tests from different machines and how to centralize and visualize real-time metrics using Prometheus and Grafana.
See https://feryn.eu/speaking/distributed-load-testing-k6-devops-barcelona-23/ for more information.
어떻게 하면 배포 프로세스를 빠르게 개선할 수 있을까요?
git branch를 푸시하고 개별 테스트 서버를 만드려면 어떻게 해야 할까요?
쿠버네티스와 GitOps, Argo CD를 이용한 배포 방법을 소개 합니다.
Open Infrastructure & Cloud Native Days Korea 2019 발표자료
원본 슬라이드 다운로드 - http://bit.ly/subicura-gitops
Auto-Pilot for Apache Spark Using Machine LearningDatabricks
At Qubole, users run Spark at scale on cloud (900+ concurrent nodes). At such scale, for efficiently running SLA critical jobs, tuning Spark configurations is essential. But it continues to be a difficult undertaking, largely driven by trial and error. In this talk, we will address the problem of auto-tuning SQL workloads on Spark. The same technique can also be adapted for non-SQL Spark workloads. In our earlier work[1], we proposed a model based on simple rules and insights. It was simple yet effective at optimizing queries and finding the right instance types to run queries. However, with respect to auto tuning Spark configurations we saw scope of improvement. On exploration, we found previous works addressing auto-tuning using Machine learning techniques. One major drawback of the simple model[1] is that it cannot use multiple runs of query for improving recommendation, whereas the major drawback with Machine Learning techniques is that it lacks domain specific knowledge. Hence, we decided to combine both techniques. Our auto-tuner interacts with both models to arrive at good configurations. Once user selects a query to auto tune, the next configuration is computed from models and the query is run with it. Metrics from event log of the run is fed back to models to obtain next configuration. Auto-tuner will continue exploring good configurations until it meets the fixed budget specified by the user. We found that in practice, this method gives much better configurations compared to configurations chosen even by experts on real workload and converges soon to optimal configuration. In this talk, we will present a novel ML model technique and the way it was combined with our earlier approach. Results on real workload will be presented along with limitations and challenges in productionizing them. [1] Margoor et al,'Automatic Tuning of SQL-on-Hadoop Engines' 2018,IEEE CLOUD
Apache kafka performance(throughput) - without data loss and guaranteeing dat...SANG WON PARK
Apache Kafak의 성능이 특정환경(데이터 유실일 발생하지 않고, 데이터 전송순서를 반드시 보장)에서 어느정도 제공하는지 확인하기 위한 테스트 결과 공유
데이터 전송순서를 보장하기 위해서는 Apache Kafka cluster로 partition을 분산할 수 없게되므로, 성능향상을 위한 장점을 사용하지 못하게 된다.
이번 테스트에서는 Apache Kafka의 단위 성능, 즉 partition 1개에 대한 성능만을 측정하게 된다.
향후, partition을 증가할 경우 본 테스트의 1개 partition 단위 성능을 기준으로 예측이 가능할 것 같다.
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...Amazon Web Services Korea
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study
이 세션에서는 데브시스터즈의 Case Study를 통하여 Data Lake를 만들고 사용하는데 있어 요구 되는 사항들에 대해 공유합니다. 여러 목적에 맞는 데이터를 전달하기 위해 AWS 를 활용하여 Data Lake 를 구축하게된 계기와 실제 구축 작업을 하면서 경험하게 된 것들에 대해 말씀드리고자 합니다. 기존 인프라 구조 대비 효율성 및 비용적 측면을 소개해드리고, 빅데이터를 이용한 부서별 데이터 세분화를 진행할 때 어떠한 Architecture가 사용되었는지 소개드리고자 합니다.
Building distributed systems is challenging. Luckily, Apache Kafka provides a powerful toolkit for putting together big services as a set of scalable, decoupled components. In this talk, I'll describe some of the design tradeoffs when building microservices, and how Kafka's powerful abstractions can help. I'll also talk a little bit about what the community has been up to with Kafka Streams, Kafka Connect, and exactly-once semantics.
Presentation by Colin McCabe, Confluent, Big Data Day LA
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Yongho Ha
요즘 Hadoop 보다 더 뜨고 있는 Spark.
그 Spark의 핵심을 이해하기 위해서는 핵심 자료구조인 Resilient Distributed Datasets (RDD)를 이해하는 것이 필요합니다.
RDD가 어떻게 동작하는지, 원 논문을 리뷰하며 살펴보도록 합시다.
http://www.cs.berkeley.edu/~matei/papers/2012/sigmod_shark_demo.pdf
고승범(peter.ko) / kakao corp.(인프라2팀)
---
카카오에서는 빅데이터 분석, 처리부터 모든 개발 플랫폼을 이어주는 솔루션으로 급부상한 카프카(kafka)를 전사 공용 서비스로 운영하고 있습니다. 전사 공용 카프카를 직접 운영하면서 경험한 트러블슈팅과 운영 노하우 등을 공유하고자 합니다. 특히 카프카를 처음 접하시는 분들이나 이미 사용 중이신 분들이 많이 궁금해하는 프로듀서와 컨슈머 사용 시의 주의점 등에 대해서도 설명합니다.
5 things you didn't know nginx could dosarahnovotny
NGINX is a well kept secret of high performance web service. Many people know NGINX as an Open Source web server that delivers static content blazingly fast. But, it has many more features to help accelerate delivery of bits to your end users even in more complicated application environments. In this talk we'll cover several things that most developers or administrators could implement to further delight their end users.
배민찬(https://www.baeminchan.com) 서비스의 백엔드 시스템 중 일부가 지난 1년간 어떤 고민과 아이디어, 결과물을 만들어냈는지 공유하려고 합니다. 발표 중 언급되는 용어나 도구에 대해 일반적인 정의나 간단한 설명은 언급되나 자세히 다루지 않습니다. 사용된 도구들로 어떻게 이벤트 기반 분산 시스템을 만들었는지에 대한 이야기가 중심입니다.
[2019] 바르게, 빠르게! Reactive를 품은 Spring KafkaNHN FORWARD
※다운로드하시면 더 선명한 자료를 보실 수 있습니다.
Spring Kafka 2.3에 추가된 Reactive API를 소개합니다.
모니터링시스템에서 감지한 이상 현상을 담당자들에게 통지하는 실제 사례를 중심으로 설명합니다.
Reactive 방식으로 메시지를 발행하고 소비하는 방법을 소개하고, 읽어 들인 이벤트 메시지에 적용해야 할 여러 복잡한 요구 사항을 Rx의 연산자들을 통해 간결하게 구현하는 예제를 공유합니다.
Publisher와 Subscriber 간의 동작 구조를 통해 여러 시스템 그리고 저장소와 연계할 때 주의할 점을 되짚어보고, 특히 Kafka를 이용해서 생길 수 있는 문제와 이를 해결할 방법을 제안합니다.
목차
1. Kafka 메시지를 비동기로 처리하는 방법
2. ReactiveX에서 제공하는 연산자를 활용하는 사례
3. Project Reactor의 내부 구조(Publisher-Subscriber 간 처리 흐름)
대상
- Reactive Programming에 관심 있는 분
- Kafka 등 스트리밍 플랫폼의 메시지 처리량을 높이고 싶은 분
■관련 동영상: https://youtu.be/HzQfJNusnO8
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개if kakao
황민호(robin.hwang) / kakao corp. DSP개발파트
---
최근 Spring Cloud와 Netflix OSS로 MSA를 구성하는 시스템 기반의 서비스들이 많아지는 추세입니다.
카카오에서도 작년에 오픈한 광고 플랫폼 모먼트에 Spring Cloud 기반의 MSA환경을 구성하여, API Gateway도 적용하였는데 1년 반 정도 운영한 경험을 공유할 예정입니다. 더불어 MSA 환경에서는 API Gateway를 통해 인증을 어떻게 처리하는지 알아보고 OAuth2 기반의 JWT Token을 이용한 인증에 대한 이야기도 함께 나눌 예정입니다.
Amazon DynamoDB Under the Hood: How We Built a Hyper-Scale Database (DAT321) ...Amazon Web Services
Come to this session to learn how Amazon DynamoDB was built as the hyper-scale database for internet-scale applications. In January 2012, Amazon launched DynamoDB, a cloud-based NoSQL database service designed from the ground up to support extreme scale, with the security, availability, performance, and manageability needed to run mission-critical workloads. This session discloses for the first time the underpinnings of DynamoDB, and how we run a fully managed nonrelational database used by more than 100,000 customers. We cover the underlying technical aspects of how an application works with DynamoDB for authentication, metadata, storage nodes, streams, backup, and global replication.
Change data capture with MongoDB and Kafka.Dan Harvey
In any modern web platform you end up with a need to store different views of your data in many different datastores. I will cover how we have coped with doing this in a reliable way at State.com across a range of different languages, tools and datastores.
MongoDB World 2015 - A Technical Introduction to WiredTigerWiredTiger
MongoDB 3.0 introduces a new pluggable storage engine API and a new storage engine called WiredTiger. The engineering team behind WiredTiger team has a long and distinguished career, having architected and built Berkeley DB, now the world's most widely used embedded database. In this talk we will describe our original design goals for WiredTiger, including considerations we made for heavily threaded hardware, large on-chip caches, and SSD storage. We'll also look at some of the latch-free and non-blocking algorithms we've implemented, as well as other techniques that improve scaling, overall throughput and latency. Finally, we'll take a look at some of the features we hope to incorporate into WiredTiger and MongoDB in the future.
Apache kafka performance(throughput) - without data loss and guaranteeing dat...SANG WON PARK
Apache Kafak의 성능이 특정환경(데이터 유실일 발생하지 않고, 데이터 전송순서를 반드시 보장)에서 어느정도 제공하는지 확인하기 위한 테스트 결과 공유
데이터 전송순서를 보장하기 위해서는 Apache Kafka cluster로 partition을 분산할 수 없게되므로, 성능향상을 위한 장점을 사용하지 못하게 된다.
이번 테스트에서는 Apache Kafka의 단위 성능, 즉 partition 1개에 대한 성능만을 측정하게 된다.
향후, partition을 증가할 경우 본 테스트의 1개 partition 단위 성능을 기준으로 예측이 가능할 것 같다.
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...Amazon Web Services Korea
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study
이 세션에서는 데브시스터즈의 Case Study를 통하여 Data Lake를 만들고 사용하는데 있어 요구 되는 사항들에 대해 공유합니다. 여러 목적에 맞는 데이터를 전달하기 위해 AWS 를 활용하여 Data Lake 를 구축하게된 계기와 실제 구축 작업을 하면서 경험하게 된 것들에 대해 말씀드리고자 합니다. 기존 인프라 구조 대비 효율성 및 비용적 측면을 소개해드리고, 빅데이터를 이용한 부서별 데이터 세분화를 진행할 때 어떠한 Architecture가 사용되었는지 소개드리고자 합니다.
Building distributed systems is challenging. Luckily, Apache Kafka provides a powerful toolkit for putting together big services as a set of scalable, decoupled components. In this talk, I'll describe some of the design tradeoffs when building microservices, and how Kafka's powerful abstractions can help. I'll also talk a little bit about what the community has been up to with Kafka Streams, Kafka Connect, and exactly-once semantics.
Presentation by Colin McCabe, Confluent, Big Data Day LA
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Yongho Ha
요즘 Hadoop 보다 더 뜨고 있는 Spark.
그 Spark의 핵심을 이해하기 위해서는 핵심 자료구조인 Resilient Distributed Datasets (RDD)를 이해하는 것이 필요합니다.
RDD가 어떻게 동작하는지, 원 논문을 리뷰하며 살펴보도록 합시다.
http://www.cs.berkeley.edu/~matei/papers/2012/sigmod_shark_demo.pdf
고승범(peter.ko) / kakao corp.(인프라2팀)
---
카카오에서는 빅데이터 분석, 처리부터 모든 개발 플랫폼을 이어주는 솔루션으로 급부상한 카프카(kafka)를 전사 공용 서비스로 운영하고 있습니다. 전사 공용 카프카를 직접 운영하면서 경험한 트러블슈팅과 운영 노하우 등을 공유하고자 합니다. 특히 카프카를 처음 접하시는 분들이나 이미 사용 중이신 분들이 많이 궁금해하는 프로듀서와 컨슈머 사용 시의 주의점 등에 대해서도 설명합니다.
5 things you didn't know nginx could dosarahnovotny
NGINX is a well kept secret of high performance web service. Many people know NGINX as an Open Source web server that delivers static content blazingly fast. But, it has many more features to help accelerate delivery of bits to your end users even in more complicated application environments. In this talk we'll cover several things that most developers or administrators could implement to further delight their end users.
배민찬(https://www.baeminchan.com) 서비스의 백엔드 시스템 중 일부가 지난 1년간 어떤 고민과 아이디어, 결과물을 만들어냈는지 공유하려고 합니다. 발표 중 언급되는 용어나 도구에 대해 일반적인 정의나 간단한 설명은 언급되나 자세히 다루지 않습니다. 사용된 도구들로 어떻게 이벤트 기반 분산 시스템을 만들었는지에 대한 이야기가 중심입니다.
[2019] 바르게, 빠르게! Reactive를 품은 Spring KafkaNHN FORWARD
※다운로드하시면 더 선명한 자료를 보실 수 있습니다.
Spring Kafka 2.3에 추가된 Reactive API를 소개합니다.
모니터링시스템에서 감지한 이상 현상을 담당자들에게 통지하는 실제 사례를 중심으로 설명합니다.
Reactive 방식으로 메시지를 발행하고 소비하는 방법을 소개하고, 읽어 들인 이벤트 메시지에 적용해야 할 여러 복잡한 요구 사항을 Rx의 연산자들을 통해 간결하게 구현하는 예제를 공유합니다.
Publisher와 Subscriber 간의 동작 구조를 통해 여러 시스템 그리고 저장소와 연계할 때 주의할 점을 되짚어보고, 특히 Kafka를 이용해서 생길 수 있는 문제와 이를 해결할 방법을 제안합니다.
목차
1. Kafka 메시지를 비동기로 처리하는 방법
2. ReactiveX에서 제공하는 연산자를 활용하는 사례
3. Project Reactor의 내부 구조(Publisher-Subscriber 간 처리 흐름)
대상
- Reactive Programming에 관심 있는 분
- Kafka 등 스트리밍 플랫폼의 메시지 처리량을 높이고 싶은 분
■관련 동영상: https://youtu.be/HzQfJNusnO8
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개if kakao
황민호(robin.hwang) / kakao corp. DSP개발파트
---
최근 Spring Cloud와 Netflix OSS로 MSA를 구성하는 시스템 기반의 서비스들이 많아지는 추세입니다.
카카오에서도 작년에 오픈한 광고 플랫폼 모먼트에 Spring Cloud 기반의 MSA환경을 구성하여, API Gateway도 적용하였는데 1년 반 정도 운영한 경험을 공유할 예정입니다. 더불어 MSA 환경에서는 API Gateway를 통해 인증을 어떻게 처리하는지 알아보고 OAuth2 기반의 JWT Token을 이용한 인증에 대한 이야기도 함께 나눌 예정입니다.
Amazon DynamoDB Under the Hood: How We Built a Hyper-Scale Database (DAT321) ...Amazon Web Services
Come to this session to learn how Amazon DynamoDB was built as the hyper-scale database for internet-scale applications. In January 2012, Amazon launched DynamoDB, a cloud-based NoSQL database service designed from the ground up to support extreme scale, with the security, availability, performance, and manageability needed to run mission-critical workloads. This session discloses for the first time the underpinnings of DynamoDB, and how we run a fully managed nonrelational database used by more than 100,000 customers. We cover the underlying technical aspects of how an application works with DynamoDB for authentication, metadata, storage nodes, streams, backup, and global replication.
Change data capture with MongoDB and Kafka.Dan Harvey
In any modern web platform you end up with a need to store different views of your data in many different datastores. I will cover how we have coped with doing this in a reliable way at State.com across a range of different languages, tools and datastores.
MongoDB World 2015 - A Technical Introduction to WiredTigerWiredTiger
MongoDB 3.0 introduces a new pluggable storage engine API and a new storage engine called WiredTiger. The engineering team behind WiredTiger team has a long and distinguished career, having architected and built Berkeley DB, now the world's most widely used embedded database. In this talk we will describe our original design goals for WiredTiger, including considerations we made for heavily threaded hardware, large on-chip caches, and SSD storage. We'll also look at some of the latch-free and non-blocking algorithms we've implemented, as well as other techniques that improve scaling, overall throughput and latency. Finally, we'll take a look at some of the features we hope to incorporate into WiredTiger and MongoDB in the future.
2015년 모바일 관련 성장세가 가장 큰 지역, 중남미.
국내외 모바일 관련 업체 또는 인디 개발자 분들의 중남미 진출을 돕고자
모바일 플랫폼을 준비 중에 있습니다.
문의 사항 있으시면 편하게 메일 부탁 드립니다.
Email: younsang1980@softnyx.com
위챗 공식 계정 (公众号) 관리 3rd party platform
국내 최초 한글화! 위챗 매니저 (wechatmanager.co.kr)
이제 편리하게 위챗 공식 계정 (公众号)를 생성하고 관리할 수 있는 길이 열렸습니다.
Index.
1.중국 디지털 마케팅의 현실
-국내 브랜드의 기회
-그러나 현실은?
-우리가 알던 디지털 마케팅 환경과 다르다.
-그러나 탐난다. 세계 최대 규모, 중국 인터넷 시장
-중국 시장에 진입하려면 중국의 디지털 플랫폼을 이용해야 한다!
-현재 주목해야 할 미디어는 모바일 메신저!
-모바일 메신저 (mobile instant messenger) 이용률 증가!
-모바일 라이프 3대 화두: 소셜 , 위치, 모바일
2. 위챗(wechat; 微信)
-중국인 라이프 스타일의 혁명! 중국인의 일상을 대표하는 브랜드
-위챗 관련 주요 지표_글로벌
-위챗 관련 주요 지표_중국
-위챗 사용자 Demographics_성별
-위챗 사용자 Demographics_연령별
-위챗 사용자 Demographics_직업별
-위챗 (wechat; 微信) 사용자 인터페이스 (UI)
-위챗 (wechat; 微信) 생태계를 이루는 핵심 기능
-위챗 기능 사용 비율
-모멘트(Moments; 朋友圈) 관련 주요 지표
-중국 소셜 플랫폼에서 위챗이 차지하는 비중 (공유)
-메시징, SNS, 전자 상거래, 고객 서비스 등 모든 기능을 통합한 생태계
-중국 고객에게 접근하고, 사로잡을 수 있는 효율적인 마케팅 tool
3.위챗 공식 계정 (公众号)
-기업, 조직, 오피니언 리더(KOL)를 위한 위챗 브랜드 전용 계정
-공식 계정 관련 주요 지표
-2가지 타입의 공식 계정 : 서비스 계정 VS 구독 계정
-공식 계정 인터페이스
-왜 수많은 브랜드가 공식 계정을 이용할까요?
-위챗 공식 계정에 대한 마케터의 인식은 어떨까요?
-위챗 사용자는 어떻게 공식 계정에 접속할까요?
-그럼, 위챗 공식 계정, 어떻게 시작할 수 있나요?
-위챗 공식 계정, 국내 기업이 생성해 운영할 길은 없을까?
4.위챗 매니저 (wechat manager)
-위챗 공식 계정, 이제 우리가 활용할 기회가 왔습니다.
-써드파티 공식계정 관리 플랫폼으로서 위챗 매니저
-공중 플랫폼 대비 위챗 매니저 특징 및 장점
-위챗 매니저, 어떻게 이용하면 가장 효과적일까요?
-UI 설정
-콘텐츠 관리
-CRM
-외부 모듈 연동
-부가 기능
-위챗 매니저 통계 (Analytics)
-위챗 매니저 공식 계정과 친구를 맺으세요!
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버Heungsub Lee
NDC14에서 발표한 "[야생의 땅: 듀랑고] 서버 아키텍처" 세션의 슬라이드입니다.
슬라이드에 설명이 많지 않은데, 디스이즈게임에서 발표 내용을 잘 정리해주었습니다. 기사도 함께 보시면 좋을 것 같습니다.
http://www.thisisgame.com/webzine/news/nboard/4/?n=54955
1일 수천대의 서버에서 발생하는 30~50억건의 Log와 Metric을 처리하는 Planet Mon 을 지탱하는 기술인 Collection(Collectd, NXlog), Transport(Kakfa, Logstash), Log Stream Analytics, Storage(Elasticsearch), Visualization을 구성하는 Architecture에 대해 설명드리고 제가 개발한 Log Stream Analytics 서버들의 구현 기술에 대해 좀더 상세히 설명합니다.
인터넷의 역사부터 웹의 탄생, HTTP 와 REST 등, 우리가 현재의 웹을 이해하는데 필요한 것들만 정리 했습니다.
현업에 개신 개발자 분들은 다들 아시는 내용이겠지만, 정작 우리 주위엔 웹을 많이들 쓰고, 관련해서 일을 하면서도 웹의 내부에 대해서는 잘 모르고 있는 사람들이 많습니다.
웹의 기반기술을 제대로 아는것이, 우리가 좀더 웹을 진지하게 접근하는 것의 시작이라고 생각합니다.
인터넷의 역사부터 웹의 탄생, HTTP 와 REST 등, 우리가 현재의 웹을 이해하는데 필요한 것들만 정리 했습니다.
현업에 개신 개발자 분들은 다들 아시는 내용이겠지만, 정작 우리 주위엔 웹을 많이들 쓰고, 관련해서 일을 하면서도 웹의 내부에 대해서는 잘 모르고 있는 사람들이 많습니다.
웹의 기반기술을 제대로 아는것이, 우리가 좀더 웹을 진지하게 접근하는 것의 시작이라고 생각합니다.
4. Instant Messaging 서비스 표준화 동향
• IETF’s Session Initiation Protocol (SIP)
• Henning Schulzrinne와 Mark Handley가 1996년 고안, 2000년 표준으로 채택
• IP network 상에서 음성, 화상 전화와 같은 multimedia 통신을 제어하기 위해 정의된
signaling protocol
• SIP for Instant Messaging and Presence Leveraging Extensions (SIMPLE)
• SIP를 기반으로 instant messaging, presence protocol 을 명세
• the open XML-based Extensible Messaging and Presence Protocol (XMPP)
• 1998년 Jeremie Miller에 의해 만들어져 2004년 IETF 표준이 됨
• Instant Messaging and Presence Protocol (IMPP)
• Application Exchange (APEX)
Reference : http://en.wikipedia.org/wiki/Comparison_of_instant_messaging_protocols
4
5. eXtensible Messaging and
Presence Protocol (XMPP)
• XML에 기반한 실시간 메시지 지향 공개 표준 통신 프로토콜
• 두 네트워크 피어 간에 실시간으로 메시지를 주고 받고,
부재 여부를 파악하며, 구조화된 정보들 전달
• Google Talk, Facebook chat, WhatsApp,
Windows Live Messenger 등에 이용
Reference : http://www.ibm.com/developerworks/library/x-xmppintro/,
http://xmpp.org/
XML DocumentClient Server
6. XMPP 프로토콜 특징
특징 설명
Open free, open, public 프로토콜
Standard IETF(국제 인터넷 표준화 기구) 표준
Proven 수천 개의 서버, 수백만의 사용자 확보
Decentralized Email과 유사한 방식으로 확장
Secure
SASL(Simple Authentication Security Layer),
TLS(Transport Layer Security) 등 규격 지원
Extensible XML namespace에 의해 자신만의 프로토콜을 코어위에 확장
Flexible IM 위에 네트워크 관리, 콘텐츠 동기화, 협업 도구, 파일공유, 게임 등 확장 가능
Diverse 수많은 회사 또는 오픈소스 프로젝트에서 다양한 응용서비스들을 출시하고 있음
6
7. XML 메시징 구분 (1/2)
• 스트림 (Stream)
• 두 피어 간에 XML 요소를 주고 받기 위해 미리 주고 받는 XML 문서
• 포함 요소 : 서버 주소, 프로토콜 버전, 네임스페이스
• 스탠자 (Stranza)
• 열려진 XML 스트림 내에 포함되어 전달되는 XML 문서
• 3가지 타입 존재 : message, iq, presence
• 로스터 (Roster) : 친구 리스트
• JID(Jabber Identifier) 유일한 식별자들로 구성
• 예 : romeo@gmail.com, juliet@gmail.com
7
9. 스탠자 종류 (1/3)
• 메시지 (Message) : 메시지를 전송하기 위해 사용
• 구성 요소 : to, from, type, lang, body 등
• Presence : 온라인, 자리 비움 등의 상태 표시
• 구성 요소 : lang, show, status 등
• IQ (Info/Query) : 친구 리스트 받기 등의 정보 요청
• 종류 : get, set, result, error
9
10. 스탠자 종류 (2/3)
메시지 스탠자
Presence 스탠자
Reference : http://btsweet.blogspot.kr/2014/09/google-talk-xmpp-2.html
10
11. 스탠자 종류 (3/3)
Reference : http://btsweet.blogspot.kr/2014/09/google-talk-xmpp-2.html
“get” 타입의 IQ 스탠자
“result” 타입의 IQ 스탠자
11
14. LINE, Kakao Talk 등은?
• 표준 프로토콜(XMPP) 가 아닌 자체 프로토콜 사용
• 대부분 자료를 공개하지 않음
• 어디서 자료를 얻을 수 있을까?
• 해당 서비스 홈페이지 또는 기술 블로그
• Reverse Engineering : 패킷 분석 등을 통한 사용 프로토
콜 분석
14
15. LINE
• 메시지 전송 : SPDY, Apache Thrift
• 서버 : nginx
• 데이터베이스 : Redis -> HBase
Reference : http://developers.linecorp.com/blog/?p=1420
15
16. 기존 HTTP 프로토콜 문제
• 하나의 커넥션에서 한 번에 하나만의 요청을 처리
• 요청에 대한 응답이 순차적
• 매 요청마다 동일한 Header를 중복으로 전송 : 압축하지 않음
Reference : http://www.slideshare.net/oddpoet/spdy-13231459
16
17. SPDY 특징
• Multiplexing : 하나의 커넥션 안에서 다수의 독립적인
스트림을 동시에 처리
• Server Push : 클라이언트 요청 없이 서버에서 콘텐츠를 직
접 push 가능
• HTTP 헤더 압축
17
18. Apache Thrift (1/2)
• 페이스북이 개발한 규모 가변적인(scalable) 이종 언어 서비스 개발을
위한 소프트웨어 프레임워크
• 데이터 교환을 쉽게 하기 위한 목적 : XML, JSON, Protocol Buffers
등과 유사
• 최소의 부하로 이기종 언어간 Serialization 지원
• Thrift 도구를 통해 다양한 언어의 코드 자동 생성
• C++, Java, C#, PHP, Python
• Ruby, Erlang, Perl, Haskell, Cocoa, Smalltalk, Ocaml 등
18
22. nginx
• 트래픽이 많은 웹사이트를 위해 네트워크 확장성을 주목적으로 설계
한 경량 HTTP 서버
• 아파치 웹 서버를 대체할 대안으로 급부상 중
• 비동기 이벤트 기반 구조 (아파치는 스레드/프로세스 기반)
• 사용하는 곳
• Facebook, NetFlix, WordPress, GitHub, Zynga, Sourceforge 등
• 한국에서는 네이버 첫 페이지, 카카오톡 공지사항 서버
Reference : http://nginx.org/en/docs/
22
23. Web Server 점유율 (2014년)
아파치 39%, IIS 29%, nginx 15%
Reference : http://news.netcraft.com/archives/2014/05/07/may-2014-web-server-survey.html
23
24. 이벤트 기반 구조 (1/2)
Reference : http://www.iij.ad.jp/en/company/development/tech/mighttpd/
24
25. 이벤트 기반 구조 (2/2)
• 아파치 웹 서버
• 스레드/프로세스 기반 구조
• 클라이언트의 요청이 들어오면 스레드를 생성
• 사용자가 많으면 많은 스레드 생성 : 메모리 및 CPU 낭비, Context-Switching
Overhead 발생
• nginx
• 비동기(async) 이벤트(ioctl, send, recv, epoll) 기반 구조
• 다수의 연결을 효과적으로 처리
• 대부분의 코어 모듈이 Apache보다 적은 리소스로 더 빠르게 동작
Reference : http://opentutorials.org/module/384/3462
25
26. Redis
• "REmote DIctionary System"의 약자로 메모리 기반의
Key/Value Store
• 빠른 처리(read/write) 속도와 검증된 소프트웨어 안정성
제공
• 다양한 데이터 구조 저장 : String, hash, lists, sets, sorted
set, bitmap 등
• 사용하는 곳 : 트위터, 핀터레스트, 인스타그램, 텀블러 등
Reference : http://redis.io/
26
27. HBase
• 기존 Redis NoSQL 의 한계
• 많은 Memory 공간을 필요, 분산 저장 시스템이 아님
• 다양한 NoSQL 비교 : HBase, Cassandra, MongoDB
• Benchmark 도구 : YCSB(Yahoo! Cloud Serving
Benchmark), 자체 Benchmark 도구 이용
• 요구사항 : 각 시나리오에 따른 시간 제약,
read/write O(1), random reads O(n) 등
Reference : http://developers.linecorp.com/blog/?p=1420
27
28. Kakao Talk
• 메시지 전송 : HTTP 기반 json
전송 -> LOCO Protocol
• 서버 : 루비온레일즈 -> C++
• 데이터베이스 : MySQL,
MariaDB, TokuDB, 멤캐시드, 카
산드라
Reference : http://blog.kakao.com/311
2011년 4월 ‘겁나빠른황소’ 프로젝트
28
29. LOCO Procotol (1/2)
• 3가지 타입의 패킷
• LocoSecureHandShakePacket : 서버와 통신을 위해 세
션을 여는 패킷(LOGIN 커맨드 패킷)
• LocoSecureNormalPacket : LOGIN 커맨드 패킷을 AES
encrypt 한 후 서버와 통신(세션 유지)
• LocoPacket : 암호화가 적용되지 않는 패킷
Reference : https://www.bpak.org/blog/2012/12/
29
30. LOCO Procotol (2/2)
• 패킷 아이디 : 패킷 구분
• 상태 코드 : 커맨드/패킷 상태 코드
• Method : 메시지 전달, 대화 상대 추
가, 차단, 채팅방 리스트 등
• Body Type, 길이, 내용
Reference : https://www.bpak.org/blog/2012/12/
30
31. DB 구성도 (1/2)
•RDBMS
•MySQL : 출시 초기 사용한 데이터베이스
•TokuDB : 로그를 쌓는데 활용
•NoSQL
•MariaDB
•MySQL과 동일한 코드 기반, 사용 방법과 구조가 동일,
•MySQL과 99.99%의 바이너리 호환성을 제공
•초당쿼리처리 속도 2~10% 빠름
•쿼리 최적화, 서브쿼리 지원, 조인 작업 시 색인 사용률 등에서 성능 향상 효과
•memcached : 데이터 요청을 캐시에서 직접 서비스, 데이터베이스에 연결된 디스크 스토리지에 대
한 접근을 줄임
•Cassandra : 분석 데이터베이스로 활용
31
Reference : http://www.oss.kr/oss_repository10/517682