배민찬(https://www.baeminchan.com) 서비스의 백엔드 시스템 중 일부가 지난 1년간 어떤 고민과 아이디어, 결과물을 만들어냈는지 공유하려고 합니다. 발표 중 언급되는 용어나 도구에 대해 일반적인 정의나 간단한 설명은 언급되나 자세히 다루지 않습니다. 사용된 도구들로 어떻게 이벤트 기반 분산 시스템을 만들었는지에 대한 이야기가 중심입니다.
토스증권은 Blitzscaling을 꿈꾸며 여정을 준비하고 있습니다.
효율적인 서비스 제공과 안정적인 운영을 위해 선택했던 경험들을 공유하고, 빠른 변화에 민첩하게 대응하는 증권팀의 비전과 높은 생산성을 만들기 위해서 선택했던 AWS 클라우드 사용 경험 중 멀티캐스트 기능을 활용한 주식 실시간 시세 제공 서비스에 대해서 구축 사례를 중심으로 소개하겠습니다.
배민찬(https://www.baeminchan.com) 서비스의 백엔드 시스템 중 일부가 지난 1년간 어떤 고민과 아이디어, 결과물을 만들어냈는지 공유하려고 합니다. 발표 중 언급되는 용어나 도구에 대해 일반적인 정의나 간단한 설명은 언급되나 자세히 다루지 않습니다. 사용된 도구들로 어떻게 이벤트 기반 분산 시스템을 만들었는지에 대한 이야기가 중심입니다.
토스증권은 Blitzscaling을 꿈꾸며 여정을 준비하고 있습니다.
효율적인 서비스 제공과 안정적인 운영을 위해 선택했던 경험들을 공유하고, 빠른 변화에 민첩하게 대응하는 증권팀의 비전과 높은 생산성을 만들기 위해서 선택했던 AWS 클라우드 사용 경험 중 멀티캐스트 기능을 활용한 주식 실시간 시세 제공 서비스에 대해서 구축 사례를 중심으로 소개하겠습니다.
24시간 365일 서비스를 위한 MySQL DB 이중화.
MySQL 이중화 방안들에 대해 알아보고 운영하면서 겪은 고민들을 이야기해 봅니다.
목차
1. DB 이중화 필요성
2. 이중화 방안
- HW 이중화
- MySQL Replication 이중화
3. 이중화 운영 장애
4. DNS와 VIP
5. MySQL 이중화 솔루션 비교
대상
- MySQL을 서비스하고 있는 인프라 담당자
- MySQL 이중화에 관심 있는 개발자
KB국민카드 - 클라우드 기반 분석 플랫폼 혁신 여정 - 발표자: 박창용 과장, 데이터전략본부, AI혁신부, KB카드│강병억, Soluti...Amazon Web Services Korea
온프레미스 분석 플랫폼에는 자원 증설 비용, 자원 관리 비용, 신규 자원 도입 및 환경 설정의 리드타임 등 다양한 측면에서의 한계가 존재합니다. 이에 KB국민카드에서는 기존 분석 플랫폼의 한계를 극복함과 동시에 시너지를 낼 수 있는 클라우드 기반 분석 플랫폼을 설계 및 도입하였습니다. 본 사례 소개는 KB국민카드의 데이터 혁신 여정과 노하우를 소개합니다.
데브시스터즈의 Cookie Run: OvenBreak 에 적용된 Kubernetes 기반 다중 개발 서버 환경 구축 시스템에 대한 발표입니다.
Container orchestration 기반 개발 환경 구축 시스템의 필요성과, 왜 Kubernetes를 선택했는지, Kubernetes의 개념과 유용한 기능들을 다룹니다. 아울러 구축한 시스템에 대한 데모와, 작업했던 항목들에 대해 리뷰합니다.
*NDC17 발표에서는 데모 동영상을 사용했으나, 슬라이드 캡쳐로 대신합니다.
효율적인 빅데이터 분석 및 처리를 위한 Glue, EMR 활용 - 김태현 솔루션즈 아키텍트, AWS :: AWS Summit Seoul 2019Amazon Web Services Korea
효율적인 빅데이터 분석 및 처리를 위한 Glue, EMR 활용
김태현 솔루션즈 아키텍트, AWS
AWS에서는 Big Data 분석 및 처리를 위해 분석 목적에 맞는 다양한 Big Data Framework 서비스를 지원합니다. 이 세션에서는 시간이 지날수록 증가하는 데이터의 분석 및 처리를 위해 사용되는 AWS Glue와 Amazon EMR 같은 AWS Big Data Framework의 내부구조를 살펴보고 머신러닝을 포함한 다양한 분석 및 ETL을 위해 효율적으로 사용할 수 있는 방법들을 소개합니다.
카카오 광고 플랫폼 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을 이용한 인증에 대한 이야기도 함께 나눌 예정입니다.
KMIP stands for key management interoperability protocol. Provides simple binary and TTLV variant protocol to manage various cryptographic key cycles for enterprise needs viz., for enterprise applications, data encryption etc.
베스핀글로벌의 자체 개발 클라우드 관리 플랫폼, OpsNow(옵스나우)를 활용하여 AWS 클라우드 비용을 절감할 수 있는 전략을 알아보겠습니다.
국내 클라우드 도입 상황을 바탕으로 한 클라우드 도입 단계별 예산을 줄일 수 있는 방법은 보다 실질적이고 효율적인 클라우드 비용 운영 방안을 제시합니다.
[Agenda]
1. 국내 클라우드 도입의 현주소
2. AWS 클라우드 비용 최적화 방안
3. 클라우드 도입 단계별 비용 절감 방안
4. OpsNow를 활용한 클라우드 비용 80% 절감하기
SK Telecom - 망관리 프로젝트 TANGO의 오픈소스 데이터베이스 전환 여정 - 발표자 : 박승전, Project Manager, ...Amazon Web Services Korea
SK Telecom의 망관리 프로젝트인 TANGO에서는 오라클을 기반으로 시스템을 구축하여 운영해 왔습니다. 하지만 늘어나는 사용자와 데이터로 인해 유연하고 비용 효율적인 인프라가 필요하게 되었고, 이에 클라우드 도입을 검토 및 실행에 옮기게 되었습니다. TANGO 프로젝트의 클라우드 도입을 위한 검토부터 준비, 실행 및 이를 통해 얻게 된 교훈과 향후 계획에 대해 소개합니다.
24시간 365일 서비스를 위한 MySQL DB 이중화.
MySQL 이중화 방안들에 대해 알아보고 운영하면서 겪은 고민들을 이야기해 봅니다.
목차
1. DB 이중화 필요성
2. 이중화 방안
- HW 이중화
- MySQL Replication 이중화
3. 이중화 운영 장애
4. DNS와 VIP
5. MySQL 이중화 솔루션 비교
대상
- MySQL을 서비스하고 있는 인프라 담당자
- MySQL 이중화에 관심 있는 개발자
KB국민카드 - 클라우드 기반 분석 플랫폼 혁신 여정 - 발표자: 박창용 과장, 데이터전략본부, AI혁신부, KB카드│강병억, Soluti...Amazon Web Services Korea
온프레미스 분석 플랫폼에는 자원 증설 비용, 자원 관리 비용, 신규 자원 도입 및 환경 설정의 리드타임 등 다양한 측면에서의 한계가 존재합니다. 이에 KB국민카드에서는 기존 분석 플랫폼의 한계를 극복함과 동시에 시너지를 낼 수 있는 클라우드 기반 분석 플랫폼을 설계 및 도입하였습니다. 본 사례 소개는 KB국민카드의 데이터 혁신 여정과 노하우를 소개합니다.
데브시스터즈의 Cookie Run: OvenBreak 에 적용된 Kubernetes 기반 다중 개발 서버 환경 구축 시스템에 대한 발표입니다.
Container orchestration 기반 개발 환경 구축 시스템의 필요성과, 왜 Kubernetes를 선택했는지, Kubernetes의 개념과 유용한 기능들을 다룹니다. 아울러 구축한 시스템에 대한 데모와, 작업했던 항목들에 대해 리뷰합니다.
*NDC17 발표에서는 데모 동영상을 사용했으나, 슬라이드 캡쳐로 대신합니다.
효율적인 빅데이터 분석 및 처리를 위한 Glue, EMR 활용 - 김태현 솔루션즈 아키텍트, AWS :: AWS Summit Seoul 2019Amazon Web Services Korea
효율적인 빅데이터 분석 및 처리를 위한 Glue, EMR 활용
김태현 솔루션즈 아키텍트, AWS
AWS에서는 Big Data 분석 및 처리를 위해 분석 목적에 맞는 다양한 Big Data Framework 서비스를 지원합니다. 이 세션에서는 시간이 지날수록 증가하는 데이터의 분석 및 처리를 위해 사용되는 AWS Glue와 Amazon EMR 같은 AWS Big Data Framework의 내부구조를 살펴보고 머신러닝을 포함한 다양한 분석 및 ETL을 위해 효율적으로 사용할 수 있는 방법들을 소개합니다.
카카오 광고 플랫폼 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을 이용한 인증에 대한 이야기도 함께 나눌 예정입니다.
KMIP stands for key management interoperability protocol. Provides simple binary and TTLV variant protocol to manage various cryptographic key cycles for enterprise needs viz., for enterprise applications, data encryption etc.
베스핀글로벌의 자체 개발 클라우드 관리 플랫폼, OpsNow(옵스나우)를 활용하여 AWS 클라우드 비용을 절감할 수 있는 전략을 알아보겠습니다.
국내 클라우드 도입 상황을 바탕으로 한 클라우드 도입 단계별 예산을 줄일 수 있는 방법은 보다 실질적이고 효율적인 클라우드 비용 운영 방안을 제시합니다.
[Agenda]
1. 국내 클라우드 도입의 현주소
2. AWS 클라우드 비용 최적화 방안
3. 클라우드 도입 단계별 비용 절감 방안
4. OpsNow를 활용한 클라우드 비용 80% 절감하기
SK Telecom - 망관리 프로젝트 TANGO의 오픈소스 데이터베이스 전환 여정 - 발표자 : 박승전, Project Manager, ...Amazon Web Services Korea
SK Telecom의 망관리 프로젝트인 TANGO에서는 오라클을 기반으로 시스템을 구축하여 운영해 왔습니다. 하지만 늘어나는 사용자와 데이터로 인해 유연하고 비용 효율적인 인프라가 필요하게 되었고, 이에 클라우드 도입을 검토 및 실행에 옮기게 되었습니다. TANGO 프로젝트의 클라우드 도입을 위한 검토부터 준비, 실행 및 이를 통해 얻게 된 교훈과 향후 계획에 대해 소개합니다.
2019년 8월 22일 버티카 웨비나 진행 자료
주제: Vertica New Features - 8.1에서 9.2까지
버티카 8.1 버전부터 9.2 버전까지의 신기능에 대한 소개를 다루고 있는 웨비나입니다. 특정 기능의 Deep-dive 또는 상세 내용과 관련하여서는 댓글로 문의주시길 바랍니다.
웨비나 녹화 링크: https://www.youtube.com/watch?v=ExdrBBpGjDw
김태현
Sr. SW Engineer. (Blizzard Entertainment)
---
글로벌 게임서비스의 무정지, 무점검 서버 개발과 운영의 사례를 소개
1. 무정지 무점검을 위해 적용된 서버 개발 기술들의 소개
2. 무정지 무점검 운영을 위한 서버의 구성과 DevOps 운용 소개
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...Amazon Web Services Korea
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study
이 세션에서는 넥슨의 Case study를 통하여 글로벌플랫폼 구축을 위해 기존 플랫폼을 AWS로 Migration하는 과정 및 발생가능한 이슈를 공유합니다. 넥슨이 DB서버를 이전하는 과정 속에서 마주한 기술적 고민과 이슈를 통하여 AWS 활용 시 고려해야 할 부분들에 대해 소개하고 함께 이야기 나누고자 합니다.
5. 사용상 장/단점 장점 Persistence Speed (간단한 데이터 2백만 건을 1.28초에 저장) Data Structure Atomic Operation (tx) Sharding / Replication 의 용이 Pub/sub / notification (message queue 또는 comet) - real time String(1G), Hash, List, Set, Sorted Set(score필요), intersection, union, difference In-memory 데이터 TTL, Expire Node.js를 포함하는 클라이언트가 다양한 언어에서구현. operation cost : O(1) Multiple Instance에 접속해서 item를 수집(select)후 옮길(move) 수 있음(locking지원) 단점 / 이슈 Ram mode에서는 이슈는 없지만, VM mode 를이용해서 메모리 관리할 때 속도가 많이 느려짐 In-memory라 메모리보다 큰 데이터는 적합하지 않을 수 있음(VM 모드를 사용할 때는 메모리 제한이 없음) -> 2.4부터 VM 모드 deprecated Persistence 의 snapshotting 이용시I/O 이슈가 있음 소스컴파일 설치 Sharding을 클라이언트에서 잘 지정할 필요가 있음 Replication시 blocking됨 (2.4부터 non-blocking하면서 속도개선)
6.
7. Portable 코드!2.4부터는 비동기로Replication 구성이 가능 * Node.js + redis사용하는사례들이 최근에 늘고 있음 * 2011년 안으로 Redis clustering을 구현할 예정 (처음부터 분산 테이블을 목표로 만들어졌기 때문에 이 부분이 구현되면 엄청난 일이 벌어질 듯..)
8. 2.4 Release 내용들 http://antirez.com/post/everything-about-redis-24 Redis Main 개발자 블로그 Small sorted sets now use significantly less memory. RDB Persistence is much much faster for many common data sets. Many write commands now accept multiple arguments, so you can add multiple items into a Set or List with just a single command. This can improve the performance in a pretty impressive way. Our new allocator is jemalloc. Less memory is used by the saving child, as we reduced the amount of copy on write. INFO is more informative. However it is still the old 2.2-alike INFO, not the new one into unstable composed of sub sections. The new OBJECT command can be used to introspect Redis values. The new CLIENT command allows for connected clients introspection. Slaves are now able to connect to the master instance in a non-blocking fashion. Redis-cli was improved in a few ways. Redis-benchmark was improved as well. Make is now colorized ;) VM has been deprecated. In general Redis is now faster than ever. We have a much improved Redis test framework.
10. 설치 / 실행 http://redis.io/download // 설치 $ wget http://redis.googlecode.com/files/redis-2.2.12.tar.gz $ tar xzf redis-2.2.12.tar.gz $ cd redis-2.2.12 $ make // 데몬 실행 $ cd src $ cd redis-server (daemon).. Log.. // 클라이언트 실행 $ cd소스설치/src ; redis-cli redis> set foo bar OK redis> get foo "bar"
11. Example Code > set foo 0 "OK" > incr foo 1 > incr foo 2 > incr foo 3 > get foo "3“ > decr foo 2 > set hello world "OK" > get hello "world" > exists hello true > type hello "string" > rename hello olleh "OK" > get olleh "world" > del olleh 1 > get olleh null > set a 1 "OK" > set b 2 "OK" > set c 3 "OK" > mget a b c ["1","2","3"] > set hello world "OK" > get hello "world" > set a 1 ‘1’ > expire a 100 true > get a "`1" > get a "`1“ (100초 뒤) > get a null > sadd seta foo true > sadd seta bar true > saddsetb foo true > sinter seta setb ["foo"]
12. Example Code > hset user:1 name x true > hset user:1 lastname y true > hset user:2 name aa true > hget user:1 wrong number of arguments (1 for 2) > hget user:1 name "x" > hgetall user:1 {"name":"x","lastname":"y"} > hget user:2 wrong number of arguments (1 for 2) > hget user:2 name "aa" > lpush list a 1 > lpush list b 2 > lpush list c 3 > lpush list d 4 > lrange list 0 2 ["d","c","b"] > lrange list 0 3 ["d","c","b","a"] > lrange list 2 3 ["b","a"] > sadd set 1 true > sadd set 2 true > sadd set 3 true > smembers set ["3","1","2"] > zaddss 1 aa true > zaddss 10 zz true > zaddss 9 yy true > zaddss 2 bb true > zrangess 0 -1 ["aa","bb","yy","zz"] LIST SET Sorted SET Hash
13. Example Code > multi "OK" > lpushclist a "QUEUED" > lpushclist b "QUEUED" > lpushclist c "QUEUED" > lrangeclist 0 -1 "QUEUED" > exec [1,2,3,["c","b","a"]] > multi "OK" > lpushdlist a "QUEUED" > lpushdlist b "QUEUED" > discard "OK" TX TX Check and Set 도 가능(watch)
16. Java client - Jedis 가장 좋은 java 클라이언트 라이브러리 https://github.com/xetorthio/jedis 자바의 Map, Set 같은 Collection과 연동되어 사용 가능 Sharding이 지원되다고 적혀있지만, 테스트는 해보지 않음 @Controller @RequestMapping("/restful") @ResponseStatus(value = HttpStatus.ACCEPTED) public class RestfulController { @RequestMapping(value = "/set/key/{key}/value/{value}", method = RequestMethod.GET) public String getString(@PathVariable String key, @PathVariable String value, ModelMap model) { System.out.println("key : " + key); System.out.println("value : " + value); Jedis jedis = new Jedis("1.1.1.1"); jedis.set(key, value); String kValue = jedis.get(key); model.addAttribute("key", key); model.addAttribute("value", kValue); return "test"; } } <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.0.0</version> <type>jar</type> <scope>compile</scope> </dependency>
17. 운영상 장점 백업은 리얼타임으로 진행 Master – Slave Replication이 수직/수평적으로 scale 가능 (지금 당장은 없지만) 올해 안으로 Clustering 기능 추가 예정 https://github.com/antirez/redis/blob/master/design-documents/REDIS-CLUSTER 대형 데이터 cache용 용도로 생각 memcached는 크기가 큰 데이터에 취약
18. 운영상 편리 Slave 구성시 서버를 내리지 않고 사용가능. Replication 순서 slave asks for SYNC master BGSAVE, slave waits master BGSAVE finished, the initial bulk data (the .rdb file) is transfered to slave master accumulates all the new differences for the slave master finishes sending the whole initial rdb file to slave master start feeding the slave with the accumulated buffer, and with anything new arriving from clients, if they are writes.
19. 운영상 이슈 & 편리 메모리에 있는 데이터들을 File system으로 덤프 Snapshotting (디폴트) 자식 프로세스 실행(fork)하고 자식프로세스가 임시(new)RDB파일 만들고, 그것을 다 저장하면 예전(old) 파일 이름으로 교체 (copy-on-write) 속도 이슈로 인해서 많이 고민했음 Append-only file (AOF) - 괜찮은 방법 2.0과 2.2가 절차가 다름. 만약 Snapshotting 하다가 Kill 되거나 비정상적 종료에 대비해서 실행 로그들을 따로 저장(Log Rewriting)하여 만약 재시작시 상태를 유지하기 위해서 AOF 파일을 읽음 자식 프로세스 실행(fork)하고, 자식 프로세스는 임시 AOF 파일을 저장한다. 부모 프로세스는 in-memory buffer에 새로 변경된 내용을 계산한다. 자식 프로세스는 쓰기 작업이 완료후에 부모 프로세스는 in-memory buffer의 내용을 AOF 파일에 저장한다. 새로운 파일로 교체.
20. 운영상 편리 AOF를 이용한다면, 서버 관점에서는 정지시간 없이 Redis재시작/ 업그레이드 가능 (서버 편함) 환경 설정 정보 변경시 재실행 새로운 버전의 redis서버 재실행 포트 변경 필요, 서버의 포트를 변경하기 때문에 client의서버 접속 포트를 수정하고 재시작 필요. (client 불편) => 오히려 이거 불편. 기존 방법 사용 필요
22. 운영상 불편점 consistent hashing 을 지원하는 client를 이용해야 distribute 가능 Sharding을 일일이 클라이언트 API를 이용해서 해줘야 함. API에서 반드시 지원 2011.8.18일현재 2.2Stable (또는 2.4)버전에서는 clustering 지원 안 함 (올해 안으로 release 되기를 기대)
23. 용도 간단한 카운터 캐쉬 용도 (특히 큰 데이터에서 사용 가능) 여러 개의 row를 검색해서 얻어야 하는 결과를 특정 조건에 맞추어 보여주기 (limit) 최근 30개, 순서대로(lpush, ltrim) 랭킹(zadd, zrank) Expire가 될 수 있는 카운트 정보
24. Arcus개발팀 Redis한계를 지적한 부분 (SDEC 2011.6) Radis 1.2 검토 대비 최신 버전 2.2 비교 Sorted set에는 no (offset, count) option => 최신 버전에서는 offset, count 기능 추가 No capped collection => 용량제한이 있으며, FIFO기능을 갖고 있는 고성능의 테이블을 capped collection이라고 함. 원래 Redis지원 안함. 원래 빠르기 때문. Not enough cache statistics Cannot control memory use => info명령어를 이용해서 간단하게 메모리 사용량 측정 가능
26. Cache 서버를 내가 구축한다면 value(field)의 데이터가 큰 경우에 사용하는 경우. (작아도 상관없음) DB 앞단의캐쉬보다는 주기적인 데이터를 저장 메모리를 많이 추가한 서버 구성 클러스터링과Replication을 잘 구축. 관련 admin 개발 Java client를 이용해서 Sharding을 잘 할 수 있도록 admin 구축 Cache 서버 Web App Server Redis Java Client (legacy 지원) (Clustering) Redis Java Client + Cron + Spring Batch (admin) Mysql (백업) Message Queue Redis DB