“안녕하세요. 담백한 개발자 김희동입니다.”
•
항상 성장하기 위해 노력하고, 개인의 성장과 팀의 성장을 함께 목표합니다.
•
사용하는 기술 및 방법에 대해 이해를 바탕으로 적용하고자 합니다.
•
현재 MSA 설계, 마이크로 서비스 간 효율적인 요청, 고가용성 서비스를 만드는 것에 관심을
갖고 있습니다.
Contact
Education
수강 과목 | 자료구조 알고리즘 데이터베이스 네트워크 논리회로 컴퓨터구조 운영체제 리눅스 시스템
컴퓨터 그래픽스 인공지능 피지컬 컴퓨팅 VR/AR 프로세싱 컴퓨터 보안 |
Career
두나무 (Dunamu)
기간 | 2022.06.27 ~ |
소속 | 메타버스실 |
구성 | |
활동 내용 |
스마일게이트 스토브 (Smilegate Stove)
기간 | 2021.12.13. ~ 2022.02.25. (인턴) |
주제 | 디스코드 클론코딩 (MSA 기반 실시간 채팅/화상 채팅 서비스) |
구성 | Backend 2명, Web Frontend 1명, Mobile(iOS) 1명 中 Backend 참여 |
활동 내용 | - MSA 기반 전체 아키텍처 설계 진행
- 시그널링 서버 설계 및 구현, 미디어 서버 인프라 구축
- WebRTC 기반의 실시간 화상 채팅 기능 구현
- 미디어 서버를 활용하여 SFU 중계 방법을 구축
- Redis를 활용하여 사용자 접속 정보(세션)를 관리
- 커뮤니티 서버 설계 및 구현
- 사용자의 워크스페이스(커뮤니티) 관련 도메인 설계 및 API 개발
- 상태관리 서버와 TCP Connection을 활용한 사용자 접속 정보 관리
- 커뮤니터 서버 내부에 메모리로 사용자 접속 정보 관리,
- TCP Connection을 통해 접속/종료 이벤트가 발생하는 경우 업데이트 진행
- 값의 무결성을 위해 일정 시간 주기로 Full Query 진행 및 업데이트 진행
- 성능 테스트 결과 TPS 향상 확인
- Gateway로 WebSocket 연결을 방지하기 위해 원활한 시그널링 서버 사용량 확인
및 사용 가능한 서버 정보 제공
- 알림 서버 설계 및 구현
- 메시지 전송 시 사용자의 장비에 따라 FCM을 활용하여 푸시 메시지 전송 기능 구현
- SonarQube를 활용한 코드 품질 개선 및 nGrinder, Jmeter를 활용한 성능 개선 |
언어 및 기술 | Java SpringBoot Spring MVC Spring Data JPA Spring Cloud Spring Integration
WebSocket MySQL Redis Kurento Media Server Nginx AWS FCM
nGrinder Jmeter SonarQube |
소스 코드 |
웍스 모바일 (Works Mobile)
기간 | 2021.07.05. ~ 2021.08.27. (인턴) |
주제 | 배포 결과 모니터링 툴 제작 |
구성 | 1명 |
활동 내용 | - 배포 시 수작업으로 확인해야 하는 부분(화면 랜더링 이슈 등)에 대한 자동화
- 배포 시 장비를 구분할 수 있도록 배포 스크립트 추가
- 웹 서버 종료 후 소프트 링크가 교체된 뒤 다시 실행될 때 스크립트 실행
- 배포 장비의 브라우저 이미지 추출과 검증
- Selenium을 활용하여 실제 장비의 브라우저 랜더링 이미지 추출
- 페이지 랜더링 시 receive되는 파일들의 상태 코드를 1차로 검증
- 장비의 IDC에 따른 스테이징 서버의 스크린샷 이미지를 기준으로 이미지 일치도와
유사도를 검증
- 또한 추가 검증을 위해 폰트가 깨지거나 이미지가 정상적으로 랜더링 되지 않은
이미지 셋을 수집한 후, 트레이닝 셋으로 활용하여 스크린샷 이미지의 랜더링 유효성
검증을 진행
- 배포 결과 제공 및 알림
- 웹 페이지를 활용하여 IDC 별, 장비 별 배포 결과와 실제 스크린샷 이미지 제공
- 검사 과정에서 에러가 발견된 경우 관리자 이메일에 해당 장비의 정보와 스크린샷
이미지를 전송 |
언어 및 기술 | Java SpringBoot Spring MVC Thymeleaf Selenium Flask Tensorflow OpenCV |
소스 코드 | 사내 깃허브 계정을 이용하여 작업을 진행했습니다. |
Blog
개인 실험 및 정리
기술 블로그
Software Skills
Projects
Smooth
기간
•
2021.12. ~ 2022.02.
구성
•
Backend 2명, Frontend(Web, iOS) 2명 中 Backend 참여
Github
사용 기술
•
Java SpringBoot Spring MVC Spring Data JPA Spring Cloud Spring Integration
WebSocket MySQL Redis Kurento Media Server Nginx AWS FCM
nGrinder Jmeter SonarQube
프로젝트 소개 및 성과
•
MSA 기반의 대용량 서비스 구현을 목표로 텍스트 채팅과 화상 채팅을 모두 지원하는 ‘디스코드 클론코딩’을 주제로 프로젝트를 진행했습니다.
•
전체 아키텍처를 설계하며 MSA 설계와 마이크로 서비스간 효율적인 요청 및 확장성을 고려했습니다.
•
미디어 서버를 활용하여 WebRTC 기반의 화상 채팅 기능을 구현했고, TCP Connection을 활용하여 사용자의 접속 정보를 저장 및 관리했습니다.
•
프로젝트 진행 과정에서 기술 선택 이유를 설명하기 위해 기술의 개념 및 선택 이유를 Wiki에 정리했고, 프로젝트 적용 전에 별도의 래퍼지토리를 생성하여 PoC 및 R&D를 진행했습니다.
•
nGrinder와 Jmeter를 활용하여 부하 테스트를 진행하며 성능을 개선하고자 했고, SonarQube를 활용하여 코드의 중복성을 낮추고 품질을 높이기 위해 노력했습니다.
•
Blind Cafe
기간
•
2021.09. ~ 2021.12. / 현재 업데이트 진행 중
구성
•
Planner 1명, Designer 1명, Backend 1명, Frontend(AOS, iOS) 2명 中 Backend 참여
Github
사용 기술
•
Java SpringBoot Spring MVC Spring Data JPA Spring Security Spring RESR Docs WebSocket STOMP SockJs MySQL MongoDB Redis Nginx Jenkins SonarQube AWS FCM
프로젝트 소개 및 성과
•
영화 ‘어바웃 타임’의 한 장면이었던 ‘블라인드 데이트’에서 영감을 받아 상대방의 정보를 알지 못한 채 관심사를 바탕으로 매칭된 상대방과 3일간 채팅을 진행하는 데이트 매칭 애플리케이션입니다.
•
현재 업데이트가 진행되고 있으며 채팅 기능의 경우 단일서버일 때는 WebSocket과 STOMP를 활용하여 서비스를 제공하는데 문제가 없지만 이후 확장성을 고려하여 Redis를 메시지 브로커로 활용하여 기능을 개발했습니다.
•
또한 매칭이 성사되고 일정 시간이 지날 때마다 푸시 알림이 제공되는 기능과 매일 밤 12시 매칭권이 리셋되는 기능을 제공하기 위해 @Scheduled을 이용하여 작업을 실행하고 있습니다.
기타 프로젝트
Experience
기타 활동
Awards and Certificate
•
제 4회 4차 산업혁명 인재양성 연합페스티발 대상(한국정보통신보안윤리학회)
•
성균관대학교 Co-Deep Learning 우수상 (딥러닝 기반 속도 측정 모델 개발)
•
2021 한국정보처리학회 ICT 멘토링 학술대회 (2021 ACK) 우수상 및 논문 게재
https://www.koreascience.or.kr/article/CFKO202133649075982.pdf
•
정보처리산업기사