2. 에브리싱 소개 _ 1. 컨셉
UI
• 2013년 1월 – 기획, 디자인, 개발 작업 시작
• 2013년 5월 - 태국 출시
• 2013년 6월 – 한국 출시
• 2013년 8월 – GooglePlay 여름 음악 축제 Featured
• 2013년 12월 – 2013 GooglePlay 앱 어워즈 Top 16 선정
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. 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. 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 시점에서 더 높은 가치 평가를
얻기 위한 필수 요소
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. 알아두면 좋은 팁들 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. 알아두면 좋은 팁들 - ScalableLayout
ScalableLayout - 안드로이드의 다양한 해상도 대응을 위한 솔루션 (BSD License)
•
LinearLayout 이나 FrameLayout 과 같은 wrapper layout을 대체 하는 개념
•
View를 감싸는 layout을 생성한 뒤 내부의 view 들을 상대적인 수치로 위치와 크기 설정
•
•
옵티머스 원 부터 갤럭시 탭 10.1 까지 한번의 코딩으로 해결
•
•
게임 엔진에서 이용하는 방식. DP나 PX 같은 단위가 필요 없음.
다양한 해상도 비율에서 일관성 있는 UI 제공 (옵티머스 뷰와 같은 변태적인 화면비율 도 대응)
https://github.com/ssomai/ScalableLayout
11. 알아두면 좋은 팁들 – LocalStrings
LocalStrings – 다국어 지원을 위한 text 관리 툴 + Class (BSD License)
•
https://github.com/ssomai/LocalStringGenerator
•
Google SpreadSheet를 통해 편리한 text 수정 및 관리 가능
•
Google SpreadSheet에서 Java 파일 생성 (언어별 text와 주석 포함)
•
iOS도 지원
•
Basic.OK.get() -> 디바이스의 언어가 한글이면 확인으로 변환. 영어면 OK로 변환