////
Search
Duplicate

김희동 (Heedong Kim)

“안녕하세요. 담백한 개발자 김희동입니다.”

항상 성장하기 위해 노력하고, 개인의 성장과 팀의 성장을 함께 목표합니다.
사용하는 기술 및 방법에 대해 이해를 바탕으로 적용하고자 합니다.
현재 MSA 설계, 마이크로 서비스 간 효율적인 요청, 고가용성 서비스를 만드는 것에 관심을
갖고 있습니다.

Contact

Education

성균관대학교 컴퓨터교육과 (2016.03. ~)
수강 과목
자료구조 알고리즘 데이터베이스 네트워크 논리회로 컴퓨터구조 운영체제 리눅스 시스템 컴퓨터 그래픽스 인공지능 피지컬 컴퓨팅 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

개인 실험 및 정리

study
ruthetum

기술 블로그

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를 활용하여 코드의 중복성을 낮추고 품질을 높이기 위해 노력했습니다.
최종 평가에서 인턴 기간동안 함께 참여했던 8팀 중 MVP팀을 수상했습니다.

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일간 채팅을 진행하는 데이트 매칭 애플리케이션입니다.
현재 업데이트가 진행되고 있으며 채팅 기능의 경우 단일서버일 때는 WebSocketSTOMP를 활용하여 서비스를 제공하는데 문제가 없지만 이후 확장성을 고려하여 Redis를 메시지 브로커로 활용하여 기능을 개발했습니다.
또한 매칭이 성사되고 일정 시간이 지날 때마다 푸시 알림이 제공되는 기능과 매일 밤 12시 매칭권이 리셋되는 기능을 제공하기 위해 @Scheduled을 이용하여 작업을 실행하고 있습니다.
기타 프로젝트

Experience

기타 활동

Awards and Certificate

제 4회 4차 산업혁명 인재양성 연합페스티발 대상(한국정보통신보안윤리학회)
성균관대학교 Co-Deep Learning 우수상 (딥러닝 기반 속도 측정 모델 개발)
2021 한국정보처리학회 ICT 멘토링 학술대회 (2021 ACK) 우수상 및 논문 게재 https://www.koreascience.or.kr/article/CFKO202133649075982.pdf
정보처리산업기사