Skip to main content
스
마
일
게
이
트
서
버
개
발
캠
프
훈
민
정
음
1
박
2
이
최
종
발
표
목
차
하나 팀원 소개
두울 프로젝트 개요 - 기획 및 기능
셋 설계 ­ 데이터베이스 및 아키텍쳐 설계
넷 결과 및 시연 영상
다섯 마일스톤
여섯 프로젝트 진행과정
일곱 마지막 소감
“ ”팀원 소개
dP
A
A
g A
A e g
A
I
@
g A
A
, J
21
“ ”팀원 소개
! ,
21
“ ”프로젝트 개요
21
“ ”프로젝트 개요
개발 동기 및 목적
21
프로젝트 개요
기획 방향“ ”
?
하나 메시지 정확도 별 신분제도
두울 가장 많이 틀리는 단어 통계
셋 바탕색을 통한 메시지 틀림 표시
21
“ ”메시지 정확도 별 신분 제도
오랑캐
백정
평민
선비
학자
세종
•
• 6
• 6
• 6
• 0
21
“ ”가장 많이 틀리는 맞춤법 통계
•
•
•
•
0
21
“ ”바탕색을 통한 틀림 표시
•
•
•
•
21
“ ”프로젝트 소개
기능 명세서
21
“ ”프로젝트 소개
기능 명세서
T
3
O P O
3
. 3
3
21
“ ”프로젝트 소개
기능 명세서
.
,
, ,
21
“ ”결과 및 시연영상
21
시연 영상 첨부했습니다!
“ ”아키텍쳐 설계
인증 서버
채팅 서버
맞춤법 검사
서버 , ,
…
백엔드
…
채팅
instance
인증
instance
맞춤법
instance
X 4
X 4
X 4
,
B
프론트엔드
스토리지
21
“ ”데이터베이스 설계
21
“ ”프로젝트 및 일정 관리
!
. /
/ .
21
“ ”프로젝트 및 일정 관리
!
p 1
q 1 r
1 1 1 1 v
1 21 1 1 r i n 1
t cqe pub o ps q o p
a hm gd l
“ ”프로젝트 및 일정 관리
!
!
21
“ ”프로젝트 및 일정 관리
MASTER DEVELOP
HM73_fix_socket_error
HM30_modify_login_form
HM90_implement_read_checking
M >
<H
> D > >< >
21
“ ”프로젝트 및 일정 관리
2 1 1
!
!
“ ”마일스톤
1
▪ C
▪ C
▪ C i
▪ 1
▪ I/ e
▪ ei
2
▪ e i
▪
▪ : i
▪
▪
▪ D
3
▪
▪ J 1
21
1 2 3
▪ C
▪ C
▪ C i
▪ 1
▪ I/ e
▪ ei
▪ e i
▪
▪ : i
▪
▪
▪ D
▪
▪ J 1
“ ”마일스톤 성취도
21
“ ”맞춤법 검사 서버
21
어떻게 맞춤법 검사를 해야 할까?
9 /
•
•
•
• -
소스를 확인해보니..
모든 오픈소스들이 웹 크롤링 기반으로 동작하는 맞춤법 검사기였다.
아마도 공개된 맞춤법 검사 API가 존재하지 않기 때문…
“ ”맞춤법 검사 서버
21
어떻게 맞춤법 검사를 해야 할까?
한정된 시간
압박
고통
부족한 인력
스트레스
다양한 이유로
눈물을 머금고 웹 크롤링 방식을 채택하기로 결정!
“ ”맞춤법 검사 서버
21
어떤 검사기를 써야 할까?
: 낮은 정확도, 형태소 분리 기능 미 제공
: 진리의 부산대 맞춤법 검사기, 높은 정확도 및 형태소 분리, But 서버 장애..
: 괜찮은 정확도와 기능 그리고 탄탄한 서버 안정성! 당첨!
“ ”맞춤법 검사 서버
21
최소한의 HTTP Request를 위해..
!!
메신저에서 자주 사용되지만
맞춤법 검사할 필요 없는 메시지
EX) 초성어, 영어, 특수문자
: 정규표현식을 통해 필터링!
1. 한글이 없는 메시지
2. 한 음절 이하인 메시지
3. 초성으로만 된 메시지
4. 종단의 특수문자 및 영어 제거
필터링 조건
“ ”맞춤법 검사 서버
21
채팅 서버채팅 서버
맞춤법 검사 서버맞춤법 검사 서버
RabbitMQ의 RPC구조(Request-Response)를 이용한 맞춤법 검사 요청
“ ”맞춤법 검사 서버
21
채팅 서버채팅 서버
맞춤법 검사 서버맞춤법 검사 서버
“ ”맞춤법 검사 서버
21
채팅 서버채팅 서버
맞춤법 검사 서버맞춤법 검사 서버
맞춤법 검사 서버맞춤법 검사 서버
···
여러 Consumer가 같은 Queue의 메시지를 소비할 경우
Round-Robin 방식으로 메시지 전달
: Consumer의 수평적 확장에 용이!
메시지의 ReplyTo를 보고 Reply Queue에 넣으므로
Producer의 수평적 확장도 끄떡 없다!
“ ”맞춤법 검사 서버
21
채팅 서버채팅 서버
맞춤법 검사 서버맞춤법 검사 서버
!
웹 크롤링 방식의 맞춤법 검사
간헐적으로 발생하는 Http Request 에러
에러난 메시지에는 RabbitMQ에 ACK를 보내지 않고
Requeue를 하여 다시 처리되게끔 동작!
※RabbitMQ는 메시지의 ACK 수신 시에만 해당 메시지가 소비되었다고 처리
“ ”맞춤법 검사 서버
21
• I )
• I ! I )
• ( D M : BS
• M E
채팅 서버 Socket.io
“ ”
Pc db S e a .
CR a W
. W h N SW
i -
è
21
채팅 서버 Socket.io
“ ”
.,
è
21
웹 기반의 메신저인 페이스북 메신저 방식으로 읽음표시를 구현해보자!
읽음표시 기능
“ ”
21
방의 멤버들이 각각 읽은 마지막 메시지에 네임 벳지 부착
실시간 방의 접속자의 네임 벳지를 상단 바에 나열
읽음표시 기능
“ ”
21
실시간 방의 접속자의 네임 벳지를 상단 바에 나열
-
읽음표시 기능
“ ”
21
방의 멤버들이 각각 읽은 마지막 메시지에 네임 벳지 부착
그런데…
읽음표시 기능
“ ”
21
Stime + Id
“ ”
à
??
읽음표시 기능
“ ”
21
“ ”서버 부하 테스트
21
Ngrinder와 Jmeter를 이용하여 서버 부하 테스트를 진행
•
•
•
•
•
•
•
테스트 환경
21
“ ”
2 2
“ ”맞춤법 서버 테스트
21
“ ”맞춤법 서버 테스트
21
여기까지는 순탄했으나...
“ ”인증 서버 테스트
21
부하 테스팅 중 팝콘처럼 터지는 서버
“ ”채팅 서버 테스트
1
설상가상으로 기영이 패턴까지 발견 되고 마는데…
2
“ ”성능 개선
성능 개선을 위한 시도들
1 2
21
. 3
, DB 3
“ ”성능 개선
1
노력 끝에 사라진 기영이
2
“ ”채팅 서버 테스트
2
1
“ ”동시 접속자 테스트
21
리펙토링 이후에도 늘릴 수 없었던 동시 접속자수!
이것저것 마구 시도해보았다!
. = 5489 89 >
01 4 29
“ ”성능 개선
21
a 1 2 d
. 2 1 cPb
. 1 44
C CT C d
1 .
0
성능 개선
“ ”
21
1
개인 소감
,
B D 2.
새로 경험한 것
해야하는 공부가 아니라,
해보고 싶은 공부들이 가득 생겼다.
이예은
1 .
2
2
.
2
박주연
J S VM R Q
개인 소감
,
.
새로 경험한 것
3
2
1 3
.
2
1
? .
?이하영
개인 소감
팀원들에게 많은 배움을 받았고
나도 도움을 줄 수 있어 즐거웠다.
서로 성장하는 협업이었던 것 같아 만족스럽다.
. ,
,
.
!
새로 경험한 것
감사합니다.
21