스타트업과 개발자를 위한 클라우드 태권 세미나 : SM Entertainment 에브리싱 AWS 이용 사례

10,660 views

Published on

2014년 2월 20일 부산 BEXCO에서 개최되었던 스타트업과 개발자를 위한 클라우드 태권 세미나에서 고객사 발표를 맡아주신 SM Entertainment 김영준 팀장님의 발표 자료 입니다.

Published in: Technology

스타트업과 개발자를 위한 클라우드 태권 세미나 : SM Entertainment 에브리싱 AWS 이용 사례

  1. 1. 에브리싱 AWS 이용 사례 2014.02.20 S.M.ENTERTAINMENT 에브리싱 개발팀 팀장 김영준
  2. 2. 에브리싱 소개 _ 1. 컨셉 UI • 2013년 1월 – 기획, 디자인, 개발 작업 시작 • 2013년 5월 - 태국 출시 • 2013년 6월 – 한국 출시 • 2013년 8월 – GooglePlay 여름 음악 축제 Featured • 2013년 12월 – 2013 GooglePlay 앱 어워즈 Top 16 선정
  3. 3. AWS 적용 과정
  4. 4. 요구사항 + 해결책  고정 IP 의 메시지 프로세싱 서버  AWS EC2 m3.2xlarge instance  Elastic IP 할당  가수 – 앨범 – 곡의 복잡한 DB 구조 + 추후 NoSQL 구조로 확장 가능성  AWS MySQL RDS db.m2.2xlarge  NoSQL 확장을 위해 Primary Key 로 UUID 이용  반주 MR, 자켓 이미지 등의 binary file 저장 공간 (+속도)  AWS S3  AWS CloudFront (CDN)
  5. 5. Simple spec of everysing service Cloud Service 메타 정보 관리 (artist, album, song) everysing 관리자 페 이지 내부 통신 Amazon RDS (관계형 데이터 베이스) 메시지 교환 Amazon EC2 everysing application (Android, iOS) (서버) 파일 업로드 (music, lyric, image) 파일 다운로드 (music, lyric, image) 관리자 Amazon S3 (music, lyric, image 저장소) Amazon CloudFront (music, lyric, image caching server) 사용자
  6. 6. Benefit of Using AWS? 1. S3 (Simple Storage Service) is Best! • Binary file에 대한 물리적인 관리 X • 저렴한 가격 • CDN으로의 손쉬운 연결 (Global service ready) 2. Scalability • 서버 / 네트워크 이용량 예측 X • RDS 에서 NoSQL로의 확장이 용이 3. 서비스에 대한 평가 가치 Up! • 서비스가 Cloud를 이용하는 것은 서비스의 valuation 시점에서 더 높은 가치 평가를 얻기 위한 필수 요소
  7. 7. 알아두면 좋은 팁들
  8. 8. 알아두면 좋은 팁들 1 1. Peak time에는 S3 data 접근에 장애가 생기는 경우가 발생할 수 있음. • 저녁 시간대에 S3 data http access 시 packet drop 현상 발생 (K모 통신사 이용 시) • 대부분의 다운로드는 CloudFront를 이용하여 해결. (국내에 edge 서버 有) • 실시간 수정 및 반영이 중요한 경우에는 EC2 server에서 직접 S3로 업로드 및 다운로 드 하는 우회로 이용. 2. 문서 산출물 관리. • 엑셀 형태로 관리가 가능한 문서라면 Google SpreadSheet 이용. (공유 기능 이용) • 그 외 문서들은 가급적 Evernote 이용. (Premium 계정 구매 + 공유 기능 이용) 3. 최대한 빠른 시점에 출시할 수 있도록 기획/디자인/개발. MVP! • 참신한 기획과 깔끔한 UX는 개발 기간을 단축시킨다. • 세상에서 가장 좋은 QA는 이용자들의 평가. (디바이스 전수 검사 + 전 기능 검사)
  9. 9. 알아두면 좋은 팁들 UUID 1. Multi master 환경에서 Primary Key를 확보하는 방법 (MySQL -> NoSQL) • 각각의 서버가 중복되지 않는 Primary Key를 생성할 수 있어야 함. • 따라서 MySQL의 Auto increment Key는 이용할 수 없음 • Java에서도 UUID를 생성해 주지만 중복이 되지 않는다는 보장이 없음 • 통신사마다 번호를 별도로 할당 받는 것과 같은 방식이 필요 (011, 016, 017, 018, 019) 2. Long variable type 이용 (64bit) F bit Time bit Sequential bit Server index bit Sign 1 bit 31 bit 21 bit 11 bit 버림 매 초 단위로 0 부터 1씩 올리는 값을 가진 다. (1초마다 200만 UUID 생성 가능) 각 서버마다 할당 받 는 번호. 2048개 서버 할당 가 능 getTime 에서 2012년 1월 1일 까지의 값(1325376000)을 뺀 후 초 단위의 time 값을 이용. 2080년까지 표현 가능. 1. Web Base 64로 표현 시 11 Character로 표현 ( 6 bit -> 1 char ) • https://www.everysing.com/p/A95hJQAAADk • http://www.youtube.com/watch?v=X6Jx2HWa4d0
  10. 10. 알아두면 좋은 팁들 - ScalableLayout  ScalableLayout - 안드로이드의 다양한 해상도 대응을 위한 솔루션 (BSD License) • LinearLayout 이나 FrameLayout 과 같은 wrapper layout을 대체 하는 개념 • View를 감싸는 layout을 생성한 뒤 내부의 view 들을 상대적인 수치로 위치와 크기 설정 • • 옵티머스 원 부터 갤럭시 탭 10.1 까지 한번의 코딩으로 해결 • • 게임 엔진에서 이용하는 방식. DP나 PX 같은 단위가 필요 없음. 다양한 해상도 비율에서 일관성 있는 UI 제공 (옵티머스 뷰와 같은 변태적인 화면비율 도 대응) https://github.com/ssomai/ScalableLayout
  11. 11. 알아두면 좋은 팁들 – LocalStrings  LocalStrings – 다국어 지원을 위한 text 관리 툴 + Class (BSD License) • https://github.com/ssomai/LocalStringGenerator • Google SpreadSheet를 통해 편리한 text 수정 및 관리 가능 • Google SpreadSheet에서 Java 파일 생성 (언어별 text와 주석 포함) • iOS도 지원 • Basic.OK.get() -> 디바이스의 언어가 한글이면 확인으로 변환. 영어면 OK로 변환
  12. 12. 알아두면 좋은 팁들 – LocalStrings
  13. 13. 감사합니다. 김영준 (jusinplus@smtown.com) ScalableLayout / LocalStrings 관련 문의 김영만 (ssomai@smtown.com)

×