6. Human Desgin Project에서 요구한 “배움”을 체크 해볼까
1. MQTT프로토콜을 이용한 Push서비스 경험
2. MongoDB를 Master-Slave로 Replication해보는 경험
3. Apiary를 활용해 테스트와 API Documentation를 습관화
4. HTTPS를 이용한 암호화 통신
5. NginX 경험해보기(요곤 가산점)
거 의 다 했 다!!
(허접하지만...)
7. 추가로 경험한 부분들
1. Token을 활용한 사용자 인증
2. GO언어로 간단하게 Image Server 구축해보기
지금 부터 저희의 경험을 공유하도록 하겠습니다.
3. Unit test(mocha) &REST api test(QUnit + jQuery)
8. “한 지붕 아래” 아키텍쳐
Client
Web server
Main server
MongoDB Master
MongoDB Slave
RabbitMQ
Image server
Push server
Mosquitto
req
res
write
read
write
subpush
새 글 등록시
pub
9. MQTT를 이용한 Push
Paho 라이브러리를 이용하여
MQTTService를 구현
“새 글 알림 받기” 버튼 클릭 시
Mosquitto서버에 Subscribe
새 글 등록 시,
새 글에 대한 정보를 서버에서 Publish
Client에서 Push에 대한 Logic 수행
14. Server Client
첫 진입
POST
{UUID : %@#$}UUID를
DB저장,
암호화된
token 발행 RESPONSE
{token : ^$@!}
SharedPreference로
token을 로컬에 저장
HTTP Header
Authorization : token
이후 네트워크 통신 시
HTTP Header에
token을 함께 보냄
HTTP Header에서
token정보를 가져와
사용자 식별
Token을 활용한 사용자 인증
15. 추가로!
Scale out이 가능하도록 서비스를 구성하기 위해서는
Token에 Redis, MongoDB 정보를 넣는다!
JWT모듈을 이용한 사용자 정보 암호화 시,
사용자 정보가 Scale out되어도 몇 번째 DB에 있는지에 대한 정보를
Token에 넣어 빠르게 찾을 수 있도록 설계.
(그렇지 않으면 수많은 DB를 Full scan해야 하는 심각한 문제 발생!)
20. 간단한 게시판 기반의 커뮤니티 구현인줄 알았더니....
게시판 ID에 따른 각각의 닉네임 중복 시 예외 처리
Join이 없는 NoSQL DB를 사용한 게시판 DB설계
익숙하지 않은 Fragment사용에 따른 수 많은 삽질들...
수많은 Null pointer exception, out of memory…
21. 팀 회고 요약
기획에 따라 다양한 기능을 구현해보고자 했으나
부하가 가중되어 이번 학기 때
꼭 경험해야하는 부분만 우선 구현하는 것으로 전략을 수정하였다.
다행히 필수적으로 필요한 “배움”에 대해서는 경험 할 수 있었고,
그 외에 Token이나 GO를 활용한 Image server를 만들어 보는
소기의 성과를 거두었다.
하지만 처음 기획에서 계획했던 다른 기능들을
마저 구현하지 못한 부분은 많이 아쉽고 일정관리 부분에
더 신경을 써야함을 배웠다.