미리보기
기본 정보
안녕하세요! 발견되는 문제점 및 개선점을 팀원들과 함께 지속적으로 개선하고, 안정적인 서비스 운영을 위해 고민하며 성장하는 엔지니어, 전 주호입니다!
기술 스택
Java, Spring Boot, JPA, MySQL, GitHub, AWS, Jenkins, Docker, FastAPI
프로젝트
ITGO - 통합 중고거래 서비스
팀 프로젝트
2023.09. ~ 2023.12.
안정적으로 서비스를 운영하기 위해서는?
무중단 배포
배포에서 발생하는 시간을 줄이고 적극적인 E2E 테스트를 진행하기 위해서 Jenkins로 구축했던 지난 배포 파이프라인은 새로운 기능을 추가하고 적용하기 위해서는 운영 서버가 잠시 중단되어야만 하는 문제가 있었습니다. 이러한 중단을 줄여 지속적이고 안정적인 운영 환경을 위해 고민한 결과 Nginx를 통해 기존의 서버에서 새로 배포된 서버로 로드밸런싱되도록 개선했습니다. 또한, 기존 서버에서 실행 중인 모든 요청이 응답되었을 때 안전하게 종료하기 위해 kill -15 명령어를 사용했으며 Spring Boot의 server.shutdown 설정을 graceful로 하고 Jenkins에서 지속해서 헬스체크 하도록 설정했습니다.
클라이언트에서 모든 예외를 처리하던 기존의 방식은 중복되는 코드가 많고 일정한 응답 코드와 적절한 메시지를 응답하기에 효율적이지 못했습니다. 이를 해결하기 위해서 발생 가능한 예외에 따른 응답 코드와 메시지를 enum으로 정의해서 사용했으며, ControllerAdvice를 통해 예외 핸들러를 두어 전역에서 발생하는 예외가 적절하게 처리되어 동작할 수 있도록 구현했습니다. 이러한 방법으로 API 요청에서 발생 가능한 예외를 예상하고 적절하고 일관적인 응답을 하여 더 안정적으로 운영될 수 있도록 개선했습니다.
단위 테스트
구현된 기능들의 올바른 수행과 수정된 코드의 충돌을 검증하여 운영 중 발생할 수 있는 오류를 최소화해 안정적인 서버가 될 수 있도록 했습니다. Mockito를 사용하여 의존성을 없애고 레포지토리, 서비스, 컨트롤러 각각의 역할에 맞는 검증을 할 수 있도록 테스트 대역을 활용하여 검증을 진행했습니다. 그 과정에서 중복되어 테스트 되는 로직을 분리하여 Spy 객체를 활용하여 테스트했습니다. 또한, 전역 예외 핸들러가 적절한 응답을 하는지 검증했습니다.
물음표 - 수어 AI 영상통화 서비스
팀 프로젝트
2023.03. ~ 2023.06.
사용자가 원하는 서비스는 무엇인가?
높은 사용성 및 편의성 제공
사용자의 관점에서 더 사용하기 좋고 편할 방법이 무엇일지 고민했습니다. 결론적으로 반복되는 작업과 불필요한 수행 과정이라고 생각하고 서비스를 기획, 개발했습니다. 영상 통화를 하면서 사용자가 의사표현(수어 혹은 음성)을 전달하기 위해서 어떠한 버튼을 눌러야 한다면 사용자에게 좋지 못한 경험을 줄 것으로 판단했습니다. 이를 위해서 WebSocket API를 사용하여 수어 모션과 음성을 인식하였으며, 인식된 내용들은 즉시 통역 시스템을 통해 상대방에게 영상 혹은 음성으로 전달될 수 있도록 자동화했습니다.
영상 통화를 통해 수어를 통역하여 전달하는 과정에서 수어와 구어의 문법이 달라 표현이 자연스럽지 못한 것을 확인했습니다. 수어 단어들을 구어로 통합하는 부분에서 생성형 AI를 사용하고자 LLAMA, ChatGPT, KoGPT 등을 직접 프롬프트를 작성하며 테스트했습니다. 이 중 가장 일정한 답변과 자연스러운 표현력을 응답한 ChatGPT를 도입하였습니다.
자기소개
[발생된 문제점을 함께 공유하고 해결할 수 있는 동료]
저는 문제 해결 과정에서 동료와의 소통을 가장 중요하게 생각합니다. 프로젝트 중 발생한 기술적 문제를 해결하기 위해 팀원들에게 공유하고, 함께 고민하며 효율적인 방법을 찾아내 해결하는 데 집중해 왔습니다.
수어 통역 서비스를 개발할 때, 실시간 수어 인식 AI의 성능 문제를 마주했습니다. 이 기능을 담당한 팀원이 주저하며 인식률 저하 문제를 말해주었을 때, 저는 곧바로 함께 원인을 분석하고 해결 방안을 찾아 나섰습니다. 부족한 데이터의 양 때문에 학습이 제대로 이루어지지 않았음을 파악했습니다. 이를 해결하기 위해 AI-HUB에서 수어 관련 데이터를 확보하고, Mediapipe를 사용하여 수어 영상에서 모션 데이터를 추출할 수 있었습니다. 공유된 팀원의 문제를 내 문제와 동일하게 인식하고 함께 해결하기 위해 노력했던 순간들이 모여서, 팀원들이 더 적극적으로 문제를 공유하고 함께 해결할 수 있었다고 생각합니다. 팀원들과 끊임없이 소통하며 문제 해결에 몰두한 시간은 저에게 큰 보람과 즐거움을 주었습니다.
자격증
정보처리기사
한국산업인력공단
2024.06.
Microsoft Azure AI Fundamentals
Micorsoft
2024.05.
TOPCIT
3 | 정보통신 기획 평가원
2022.10.
교육
선문대학교
대학교(학사) | 컴퓨터공학
2017.03. ~ 2024.02. | 졸업
비트교육센터
사설 교육 | AWS 클라우드 기반 웹 풀스택 개발자 교육 과정
2022.06. ~ 2022.12. | 졸업