Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Streaming platform Kafka in SK planet

16 526 vues

Publié le

Apache Kafka의 소개를 바탕으로 SK planet에서의 Kafka활용과 발전 방향을 담은 내용입니다.
관련 영상 : http://readme.skplanet.com/?p=13802

Publié dans : Logiciels
  • Login to see the comments

Streaming platform Kafka in SK planet

  1. 1. Streaming Platform Apache Kafka Data Platform 본부 Data Infrastructure팀 강병수
  2. 2. Intro Data Infrastructure팀의 Kafka Kafka Summit 2017 NY 적용기
  3. 3. Intro
  4. 4. 상품의 구매 전환율을 실시간 통계로 뽑고 싶어요 광고 비용을 실시간으로 집계하고 싶어요 현재 접속해 있는 유저 상태에 따라 마케팅을 하고 싶어요 현재 상품의 품절 여부를 알고 싶어요
  5. 5. 사업적 니즈들을 기술적으로 어떻게 서포팅 해야할 지 고민이 늘어난다. 외래 문물을 수용하러...
  6. 6. Systems Track Streams Track Pipelines Track Data Processing at LinkedIn with Apache Kafka Portable Streaming Pipelines with Apache Beam Capture the Streams of Database Changes Kafka in the Enterprise: What if it Fails? The Best Thing Since Partitioned Bread : Rethinking Stream Processing with Apache Kafka’s new Streams API Billions of Messages a Day - Yelp’s Real-time Data Pipeline Apache Kafka Core Internals : A Deep Dive Microservices with Kafka : An Introduction to Kafka Streams with a Real-Life Example California Schemin! How the Schema Registry has Ancestry Basking in Data Simplifying Omni-Channel Retail at Scale Hanging Out with Your Past Self in VR: Time- Shifted Avatar Replication Using Kafka Streams Achieving Predictability And Compliance With The Data Distribution Hub at Bank of New York Mellon How to Lock Down Apache Kafka and Keep Your Streams Safe Building Advanced Streaming Applications using the Latest from Apache Flink and Kafka Every Message Counts: Kafka as Foundation for Highly Reliable Logging at Airbnb Running Hundreds of Kafka Clusters with 5 People The Data Dichotomy: Rethinking Data & Services with Streams The Source of Truth: Why the New York Times Stores Every Piece of Content Ever Published in Kafka Hardening Kafka for New Use Cases with Venice Easy, Scalable, Fault-tolerant Stream Processing with Kafka and Spark’s Structured Streaming Single Message Transformations Are Not the Transformations You’re Looking For Introducing Exactly Once Semantics in Apache Kafka Scalable Real-time Complex Event Processing at Uber Cloud Native Data Streaming Microservices with Spring Cloud and Kafka
  7. 7. Systems Track Streams Track Pipelines Track Data Processing at LinkedIn with Apache Kafka Portable Streaming Pipelines with Apache Beam Capture the Streams of Database Changes Kafka in the Enterprise: What if it Fails? The Best Thing Since Partitioned Bread : Rethinking Stream Processing with Apache Kafka’s new Streams API Billions of Messages a Day - Yelp’s Real-time Data Pipeline Apache Kafka Core Internals : A Deep Dive Microservices with Kafka : An Introduction to Kafka Streams with a Real-Life Example California Schemin! How the Schema Registry has Ancestry Basking in Data Simplifying Omni-Channel Retail at Scale Hanging Out with Your Past Self in VR: Time- Shifted Avatar Replication Using Kafka Streams Achieving Predictability And Compliance With The Data Distribution Hub at Bank of New York Mellon How to Lock Down Apache Kafka and Keep Your Streams Safe Building Advanced Streaming Applications using the Latest from Apache Flink and Kafka Every Message Counts: Kafka as Foundation for Highly Reliable Logging at Airbnb Running Hundreds of Kafka Clusters with 5 People The Data Dichotomy: Rethinking Data & Services with Streams The Source of Truth: Why the New York Times Stores Every Piece of Content Ever Published in Kafka Hardening Kafka for New Use Cases with Venice Easy, Scalable, Fault-tolerant Stream Processing with Kafka and Spark’s Structured Streaming Single Message Transformations Are Not the Transformations You’re Looking For Introducing Exactly Once Semantics in Apache Kafka Scalable Real-time Complex Event Processing at Uber Cloud Native Data Streaming Microservices with Spring Cloud and Kafka 서비스 Database를 실시간 입수하는 방법들 Kafka를 이용한 Microservice Kafka Streams 소개 그 외에도.. 안정적으로 System을 운영하는 사례들이나, 하둡 데이터와 실시간 이벤트를 함께 활용하는 방법들
  8. 8. 자세한 내용과 팀에 어떻게 적용하고 있는지는 뒤에서 얘기하고, 먼저, Kafka를 모르시는 분들에 위해서 간단하게 설명을 하려고 합니다.
  9. 9. Apache Kafka publish / subscribe distributed system stable store low latency high throughput real-time processing
  10. 10. Apache Kafka Producer BrokerProducer Producer Consumer Consumer Consumer
  11. 11. Apache Kafka BrokerProducer topic : syrup data : 캣츠
  12. 12. Apache Kafka BrokerProducer Disk topic : syrup data : 캣츠
  13. 13. Apache Kafka BrokerProducer Consumer Disk topic : syrup data : 캣츠 topic : syrup data : 캣츠
  14. 14. Apache Kafka Producer BrokerProducer Consumer topic : 11st data : 전자담배 topic : syrup data : 캣츠 topic : syrup data : 캣츠 Disk
  15. 15. Apache Kafka Producer BrokerProducer Consumer Consumer Disk topic : syrup data : 캣츠 topic : syrup data : 캣츠 topic : 11st data : 전자담배 topic : 11st data : 전자담배
  16. 16. Apache Kafka Producer BrokerProducer Consumer Consumer Consumer topic : 11st data : 전자담배 topic : 11st data : 전자담배 Disk topic : syrup data : 캣츠 topic : syrup data : 캣츠 topic : 11st data : 전자담배
  17. 17. Apache Kafka Producer BrokerProducer Consumer Consumer ConsumerProducer topic : OCB data : 500p Disk topic : syrup data : 캣츠 topic : syrup data : 캣츠 topic : 11st data : 전자담배 topic : 11st data : 전자담배 topic : 11st data : 전자담배
  18. 18. Apache Kafka 변경이 불가능한 이벤트 로그를 스트림으로 처리한다. Producer 와 Consumer는 의존도가 없다. Disk를 사용하기 때문에 안정적이고, 잘못 됐을 때 돌아올 수 있다. millisecond 단위의 low latency를 보장한다.
  19. 19. Disk를 사용하는데 어떻게 빠르지? 운영체제는 Disk I/O 효율을 위하여 Page Cache라는 것을 사용한다.
  20. 20. Apache Kafka 메모리 사용 상태를 보면 190GB중 165GB를 Page Cache로 사용
  21. 21. Apache Kafka CPU IO wait 역시 거의 발생하지 않음
  22. 22. Processing Kafka Streams를 이용하여 ETL이 가능하다. Store Disk를 이용하는 안정적인 저장소다. Pub / Sub 자유롭게 데이터를 넣고 땡길 수 있다.
  23. 23. Data Infrastructure팀의 Kafka
  24. 24. App log Web log Server log DB data Data Play를 하기 위해서...
  25. 25. App log Web log Server log DB data 원시 시대 FTP
  26. 26. FTP로 전송 중에 실패하면? 하둡에 전송된 일부를 지우고 재 전송 한다. 제 시간에 File이 생성되지 않으면? cron이 동작하지 않을테니 손으로 다시 돌린다.. App이나 Web같은 실시간 로그는 어떻게? 무엇인가 대책이 필요하다.
  27. 27. App log Web log Server log DB data 2011년에 Kafka를 도입
  28. 28. 전송 중 실패 부분부터 재전송 가능 파일로 뽑고 읽어서 보낼 것 없이 이벤트가 발생하면 즉시 전송 App, Web Client 로그도 이벤트 건 by 건 적재 가능 현재는 대부분의 로그를 Kafka를 통해 입수한다.
  29. 29. 38000건 / Sec 33억건 / day IN : 92 MB / Sec 8TB / day OUT : 310 MB / Sec 25TB / day 현재 Main Cluster는 평균적으로
  30. 30. Data Infrastructure팀의 Kafka Recopick 3ea Global 11st 5ea 11st 3ea Main 10ea Dev 5ea Mirror 5ea 커머스 AWS 보라매 커머스 일산 MirrorMaker MirrorMaker MirrorMaker
  31. 31. Data Infrastructure팀의 Kafka Recopick 3ea Global 11st 5ea 11st 3ea Main 10ea Dev 5ea Mirror 5ea 커머스 AWS 보라매 커머스 일산 서비스 로그 MirrorMaker MirrorMaker MirrorMaker 실시간 추천 Hadoop Monitoring 검색 인덱싱 서비스 로그 서비스 로그 서비스 로그 CEP
  32. 32. 클러스터들을 혼자 구성 및 운영하려니 고충이 많이 생김
  33. 33. IDC 및 클러스터별로 입수 상태 및 현황을 파악해야 했고, 문제가 생겼을 때 어디 쪽의 문제인지 추적이 되어야 했고, 장애시 복구 포인트나 복구는 잘 되는지를 알아야 한다. 또한 언제 어떤 Topic이 생겼는지 등의 이력관리가 되어야 하고, 문제 제기가 들어왔을 때 증명도 해야한다...
  34. 34. Data Infrastructure팀의 Kafka 운영상 편의를 위하여.... IDC 통합 모니터링 개발
  35. 35. Data Infrastructure팀의 Kafka Kafka 상태 모니터
  36. 36. Data Infrastructure팀의 Kafka Zookeeper 데이터 수집
  37. 37. Data Infrastructure팀의 Kafka 통합 Transfer
  38. 38. 운영이 편해졌다. 하지만...
  39. 39. 서비스 DB를 실시간으로 어떻게 입수 하지? real-time streaming 환경은 되어 있는데 실제 서비스는 몇 없다…. MicroService를 Kafka와 함께 쓰는게 추세라던데? 실시간으로 통계를 뽑으려면 Hadoop으로는 한계가 있지..
  40. 40. 고민 해결의 꿈을 안고 Kafka Summit 2017 NY
  41. 41. Kafka Streams
  42. 42. Kafka Streams Kafka project의 streaming library 2016년에 release 기존의 다른 Streaming Framework에 비하여 큰 이점들이 있다. 그러나, 나온지가 얼마 안되서 증명이 안됐다.
  43. 43. Kafka Streams 눈부신 성공사례로 어느정도 증명이... Line corps. 내부 파이프라인에 Kafka Streams적용하기 https://engineering.linecorp.com/en/blog/detail/80 Peak time : 100만 메시지 / sec
  44. 44. Kafka Consumer BrokerProducer topic : 11st data : 전자담배 data : 화분
  45. 45. Kafka Consumer Broker Consumer consumergroup : group-1 topic : 11st data : 전자담배 Consumer consumergroup : group-1 topic : 11st data : 화분 Producer topic : 11st data : 전자담배 data : 화분
  46. 46. Kafka Consumer Broker Consumer consumergroup : group-1 topic : 11st data : 전자담배 Consumer consumergroup : group-1 topic : 11st data : 화분 Producer topic : 11st data : 전자담배 data : 화분 Scalability Load balancing
  47. 47. Kafka Consumer BrokerProducer topic : 11st data : 자전거 data : 전동킥보드
  48. 48. Kafka Consumer Broker Consumer consumergroup : group-1 topic : 11st Consumer consumergroup : group-1 topic : 11st data : 자전거 전동킥보드 Producer topic : 11st data : 자전거 data : 전동킥보드
  49. 49. Kafka Consumer Broker Consumer consumergroup : group-1 topic : 11st Consumer consumergroup : group-1 topic : 11st data : 자전거 전동킥보드 Producer topic : 11st data : 자전거 data : 전동킥보드 High Availability
  50. 50. Kafka Streams Consumer, Producer State 1m 2m 3m 4m Join Time Window
  51. 51. Kafka Streams 비슷한 역할을 수행하던 것들
  52. 52. Kafka Streams Kafka Streams의 장점은?
  53. 53. Kafka Streams Kafka Streams의 장점은? 라이브러리이다. Yarn과 같은 resource manager가 필요없다. 오직 데몬을 돌릴 수 있는 서버만 있으면 된다. 소스가 가볍다. H/A, Scalability, Load Balancing 을 구현할 필요가 없다. Kafka에서 다 해준다. 생산성이 좋아진다. 디버깅이 쉽다. 비즈니스 로직에만 집중해서 개발을 하면 된다.
  54. 54. Kafka Streams로 쉽고 좋은 Streaming Application을 만들 수 있다.
  55. 55. Microservice
  56. 56. 하나의 레파지토리에 100만 라인의 코드였다. 모노리딕 앱 : 옐프 메인 2011 2013 2017 Kafka를 백본으로, 마이크로 서비스로 옮겼다. 70개 이상의 production 서비스였다. 2013년 보다 R&D에 100만 달러를 아끼게 됐다. 코드의 복잡성이 줄어들고, downtime이 줄어들었다.
  57. 57. Monolithic service Micro service
  58. 58. 서비스 끼리 통신이 발생한다.
  59. 59. 서비스는 필연적으로 복잡해진다.
  60. 60. 서비스 하나의 장애가 다른 서비스에도 영향을 준다
  61. 61. 시스템의 복잡도를 줄이고 Coupling을 줄일 수 없을까?
  62. 62. Kafka를 Backbone으로 활용하면 해결할 수 있다.
  63. 63. Asynchronous하게 데이터를 던지고 받는다 A B DC E B - getItem(1) A - 수영복 C - 양말, 물안 경, 수영복 …. B - top10
  64. 64. Asynchronous하게 데이터를 던지고 받는다 A B DC E A - 수영복 C - 양말, 물안 경, 수영복, …...
  65. 65. 하나의 서비스에 장애가 나도 다른 서비스는 모른다
  66. 66. 또한 복구가 됐을 때, 처리 못한 request를 모두 불러올 수 있다.
  67. 67. Message Queue는 서비스의 복잡도를 확연하게 줄여준다. Publish / Subscribe 구조는 Coupling을 줄여준다.
  68. 68. Kafka를 이용한 Microservice를 어떻게 만들 수 있을까?
  69. 69. 출처 : 넷플릭스 마이크로서비스 가이드 https://www.youtube.com/watch?feature=youtu.be&v=OczG5FQIcXw&app=desktop Microservice의 단위는?
  70. 70. Consumer, Producer State 1m 2m 3m 4m Join Time Window Kafka Streams를 이용해서 만들 수 있다.
  71. 71. Kafka에서 Data 입출력이 쉽고, Scalability, Load Balancing, H/A 구성
  72. 72. Spring Cloud의 Kafka binder를 사용해서 쉽게 만들 수 있다.
  73. 73. Kafka를 사용하면 Microservice의 복잡한 문제들을 꽤 많이 해결해준다.
  74. 74. Change Data Capture
  75. 75. 11번가 상품 DB 11번가 주문 DB Syrup 유저 DB 서비스 DB
  76. 76. 11번가 상품 DB 11번가 주문 DB Syrup 유저 DB 서비스 DB Data Application Data Analysis
  77. 77. 서비스 DB는 Kafka를 통해 적재를 못하고 있다.
  78. 78. PK Data A 2 B 2 결과 실시간 트랜잭션 Update A 1 -> 2 Delete C Insert B 1 Update B 2 DB Event Log들과 다르게 DB는 최종 변경 내용이 저장된다.
  79. 79. /data/test A 1 A 2 B 1 B 2 Hadoop 실시간 트랜잭션 Update A 1 -> 2 Delete C Insert B 1 Update B 2 DB Hadoop은 상태 변경을 처리하기에 적합하지 않다.
  80. 80. RDB Hadoop 매일 또는 매 시간 Full dump batch 그래서 우리는
  81. 81. RDB Hadoop Data Analysis Data Application 매일 또는 매 시간 Full dump batch
  82. 82. RDB Hadoop 최신 상태가 필요해.. Full dump에만 6시간이 걸려… File dump가 없으면 연락 후 재입 수 매일 또는 매 시간 Full dump batch
  83. 83. 실시간으로 데이터베이스 변경분을 반영할 수 없을까?
  84. 84. Database의 실시간 트랜잭션 로그는 어떻게 뽑지? 뽑을 수 있다면 데이터를 어떻게 순서 보장을 하면서 전송을 할까? Hadoop이 아닌 어떤 Repository를 이용해야 할까? 실시간 상태를 Hadoop에서도 볼 수 있어야 하는데.. 넘어야 할 산들
  85. 85. 우리에게 도움을 줄 회사들..
  86. 86. Database의 실시간 트랜잭션 로그는 어떻게 뽑지? 넘어야 할 산들 Redo Log, Undo Log parser - Log Miner, OGG, XStreams etc... Bin log parser - Open-Replicator Link : https://github.com/whitesock/open-replicator
  87. 87. 뽑을 수 있다면 데이터를 어떻게 순서 보장을 하면서 전송을 할까? 넘어야 할 산들 실시간 로그를 입수하면서 유실 없이 메시지 간 순서 보장을 할 수 있다.
  88. 88. Hadoop이 아닌 어떤 Repository를 이용해야 할까? 넘어야 할 산들
  89. 89. 실시간 상태를 Hadoop에서도 볼 수 있어야 하는데.. 넘어야 할 산들 Snapshot to HDFS 또는 Hive와 연동
  90. 90. RDB Hadoop Change Data Capture
  91. 91. RDB Hadoop Change Data Capture Data Application Data Analysis
  92. 92. Data 분석시, 또는 Data Application에서 실시간으로 서비스 DB의 상태를 사용할 수 있다.
  93. 93. 이제 다시 DI Cluster로 돌아가 보면
  94. 94. 상품의 구매 전환율을 실시간 통계로 뽑고 싶어요 광고 비용을 실시간으로 집계하고 싶어요 현재 접속해 있는 유저 상태에 따라 마케팅을 하고 싶어요 현재 상품의 품절 여부를 알고 싶어요
  95. 95. 현재 상태로 돌아가보면 Sentinel Rake Server Kafka Hadoop Hive Log Agent RakeAPI Mirror Maker Collector Other Streaming Apps
  96. 96. Router 위 내용들을 적용하여... Sentinel Rake Server Kafka Hadoop Druid Hbase Redis Hive Log Agent RakeAPI Mirror Maker RDB Collector Other Streaming Apps 실시간 OLAP CDC OGG 유저 상태
  97. 97. 사업적 니즈를 함께 풀어가기 위한 노력들 유저가 여러번 클릭한 상품에 대해서 즉시 구매까지 전환되도록 할 수 없을까? 실시간 통계를 보면서 수익이 많이 나는 광고를 내보내면 좋을 것 같은데.. 현재 접속해 있는 유저를 대상으로 마케팅을 하면 어떨까?
  98. 98. 사업적 니즈를 함께 풀어가기 위한 노력들 사업적 요건들을 Data Infrastructure Cluster안에서 해결해 나갈 수 있도록 고민과 노력 중!
  99. 99. 함께 데이터의 활용 가치를 높여 나가자

×