미리보기
기본 정보
![](https://cdn.rallit.com/image/2024-12-16/vB4zns02bN0c2sY-INz1I.jpg?w=360)
사람을 위한 서비스를 만들고 싶은 개발자, 김민식입니다.
기술 스택
Java, Spring Boot, AWS, Jenkins, Git, React, aws-ec2, Linux, k8s, MSA
경력
(사)한국스마트컨설팅협회
연구원 | 스마트혁신본부
2022.07. ~ 2022.09. (3개월)
UIPATH를 활용한 맞춤 업무 자동화 진행(프로젝트 총괄)
각 부서별 업무를 직접 진행하며 파악하고, 단순 반복 업무 자동화 진행
업무 협조를 위해 PT발표를 진행 자동화 시 얻을 이익, 가능 범위 제시
각 부서별 업무 리스트를 받아 자동화 여부 판단 및 우선순위 조정
결과 : 총 7개의 업무 자동화 성공. 성공적으로 RPA툴 정착
프로젝트
Clout : 소형 광고주와 소형 인플루언서를 이어주는 마케팅 매칭 서비스 앱
삼성 청년 SW아카데미(SSAFY)
2023.10. ~ 2023.11.
GIT: https://github.com/DUDINGDDI/Clout-SSAFY-
팀원 : 백엔드 3, 프론트 3 (백엔드, 인프라 담당)
사용 기술 : Java11, java17, Mysql, AWS EC2, Jenkins, redis
다양한 이커머스 사이트들은 물품 검색, 이벤트 페이지, 구매 페이지 등 특정 서비스에 트래픽이 집중되는 현상을 보임. 실제 서비스 환경과 유사한 조건에서 MSA를 적용하여 트래픽 분산 및 서비스 확장성을 확보.
Spring 기반 MSA 아키텍처를 구축하여 서비스 간 결합도를 낮추고 유연한 시스템을 설계. Spring Cloud Gateway를 API Gateway로 활용하여 외부 요청을 각 서비스로 라우팅하고, Feign Client를 통해 서비스 간 통신을 간소화 진행. 특히, Spring 기반 서비스 환경에 최적화된 Netflix Eureka를 서비스 디스커버리로 채택하여 Istio와 같은 범용 서비스 메쉬보다 효율적인 통신 환경을 구축.
MSA 확장 과정에서 JWT 토큰 관리의 효율성을 높이기 위해 Redis를 도입. 관계형 DB 대신 Redis를 사용하여 토큰 정보를 관리함으로써 DB 부하를 줄이고 응답 속도를 향상. 이를 통해 무결성을 유지하면서도 서비스 확장에 따른 성능 저하 문제를 해결하여 원활한 서비스 제공을 가능하게 구축.
Rest API 개발
사용자 인증 및 관리를 위한 토큰 기반 API를 설계 및 개발.
로그인, 로그아웃, 마이페이지 기능을 위한 API를 개발하여 사용자 정보 관리 기능을 구현.
파일 저장, 삭제, 불러오기, 관리 기능을 위한 API를 개발하여 시스템 내 파일 관리 기능을 구현.
Contract 및 Chatting 서비스와의 연동을 위한 API를 개발하여 서비스 간 데이터 통신을 가능하게구축.
짱보러갈래? : 전통시장 활성화를 위한 물품 시세 제공 기반 웹앱
신한은행 핀테크 해커톤
2023.08. ~ 2023.09.
GIT: https://github.com/ZZOL-zzol/sizzang
팀원 : 백엔드 2, 프론트 2 (백엔드, 인프라 담당)
사용 기술 : Java17, Mysql, Vercel, AWS EC2, jenkins, React
KAMIS API 활용: 실제 농산물 시세 정보를 제공하여 가격 신뢰도를 높였습니다. 그러나 실시간 시세 정보 수신으로 인해 웹 페이지 렌더링 속도가 저하되는 문제가 발생했습니다. 이를 해결하기 위해 시세 정보 업데이트 시간에 맞춰 하루에 한 번 시세를 받아 DB에 저장하고, 저장된 데이터를 활용하여 렌더링하는 방식으로 변경했습니다.
ChatGPT API 활용: 시장의 저렴한 식품을 활용한 메뉴 추천 기능을 개발하여 편의성을 높였습니다. 하지만 추천 레시피의 신뢰성 문제와 생소하거나 존재하지 않는 메뉴가 추천되는 문제가 발생했습니다. 레시피 신뢰성 문제는 재료만 제공하는 방식으로 해결했고, 메뉴 추천 문제는 ChatGPT에 역할을 부여하고 상세한 프롬프트를 제공하여 개선했습니다.
Vercel 활용: 해커톤 프로젝트 특성상 단기간에 빠른 개발 및 배포가 요구되었습니다. HTTPS, CDN, 자동 빌드 및 배포 기능을 제공하는 Vercel의 이러한 특성이 프로젝트에 적합하다 판단하여 사용했습니다.
Rest API개발
사용자에게 시장 정보를 제공하고, 원하는 정보를 쉽게 찾을 수 있도록 검색 필터 기능을 위한 API를 개발했습니다.
ChatGPT API를 연동하여 시장에서 판매하는 물건들을 조합한 메뉴를 추천하는 기능을 구현했습니다.
KAMIS의 외부 API를 연동하여 품목별 농산물 시세 정보를 제공하는 기능을 구현했습니다.
백엔드 개발이 완료된 후 프론트 개발에 도움을 줌
올리브영 사이트 오픈소스를 활용한 MSA 도입 인프라 구축 프로젝트
CJ CloudWave
2024.08. ~ 2024.08.
팀원 : 백엔드 2, 인프라 3 (팀장 인프라, 백엔드)
사용기술 : Java11, EC2, Jenkins, Harbor, ArgoCD, Istio, Karpenter, EKS
이커머스 환경에 최적화된 유연하고 비용 효율적인 시스템 구축을 위해 오픈소스 기반의 MSA 아키텍처와 GitOps 기반의 CI/CD 파이프라인을 구축했습니다. 갑작스러운 트래픽 변화와 이벤트 집중 트래픽에 효율적으로 대응하고자 EKS, Karpenter, Istio 를 활용한 마이크로서비스 아키텍처를 설계했습니다. 또한, Jenkins, Harbor, ArgoCD 를 통해 GitOps 기반의 CI/CD 파이프라인을 구축하여 자동화된 배포 시스템을 구현했습니다.
Karpenter를 활용하여 기존 CA보다 4배 빠른 스케일링 속도를 달성하여 올영 이벤트와 같은 트래픽 폭주 상황에 효과적으로 대응했습니다. Karpenter의 Spot 인스턴스 활용은 비용 효율성을 높이는 데에도 기여했습니다.
CI/CD 파이프라인 구축 과정에서 발생한 Harbor 인증서 문제는 Ansible, CloudWatch Event, Lambda를 활용하여 해결했습니다. 새로운 노드 생성 시 자동으로 인증서를 배포하는 시스템을 구축하여 안정적인 이미지 배포 환경을 확보했습니다.
Rest API 개발
사용자가 상품 정보를 상세하게 확인하고 구매할 수 있도록 물품 상세 페이지, 구매 페이지를 개발했습니다.
사용자에게 다양한 상품을 효과적으로 보여주는 물품 메인페이지를 개발했습니다.
삵음삵음 : WebRTC를 활용한 화상 웹 마피아 게임
삼성 청년 SW아카데미(SSAFY)
2023.07. ~ 2023.08.
GIT: https://github.com/DUDINGDDI/Sarkem-SSAFY-
팀원 : 백엔드 2, 프론트 2, 풀스택 2 (풀스택 담당)
사용기술 : Java11, Redis, React
Redis도입: 게임룸 생성 및 게임 진행 과정에서 발생하는 빈번한 DB 저장으로 인해 시스템 부하가 증가하는 문제를 해결하기 위해 Redis를 도입했습니다. Redis를 DB 앞단에 캐시 레이어로 활용하여 게임룸 정보와 게임 진행 상황을 저장함으로써 DB 접근 횟수를 최소화했습니다. 게임 완료 또는 종료 시에만 Redis에 저장된 정보를 DB에 일괄 저장하는 방식으로 구현하여 DB 부하를 줄이고 시스템 성능을 향상시켰습니다.
Rest API개발
게임룸 서비스
게임 결과 저장 서비스
프론트 개발 참여(React)
프로젝트 진행 중 프론트엔드 개발 리소스 부족으로 인해 직접 프론트엔드 개발에 참여하게 되었습니다.
외부 API(음성변조, 모션캡쳐)를 활용하여 서비스의 핵심 기능을 구현하고, 사용자 인터페이스를 개발했습니다.
게임 진행 상황을 실시간으로 사용자에게 전달하는 알림 기능을 구현하여 게임의 몰입도를 높였습니다.
마이크, 카메라 제어 및 게임 구간별 상태 조정 기능 등 사용자 편의성을 위한 다양한 기능을 개발했습니다.
교육
한국해양대학교
대학교(학사) | 데이터정보학과, 복수전공 : 물류시스템공학과
2017.03. ~ 2023.02. | 졸업
대외활동
삼성 청년 SW 아카데미
삼성전자
삼성전자에서 진행하는 SW 전문가 양성 교육 과정
6개월 간의 알고리즘, Vue.js, Java, Javascript 등 기술 스택 교육
6개월 간의 팀 프로젝트를 통한 협업 경험(3개의 프로젝트 진행)
교육 중 총 2번의 반장, 1번의 부반장 수행
CJ Cloudwave
CJ 올리브네트웍스
CJ에서 진행하는 인프라 교육
10주 간의 AWS를 활용한 네트워크 LINUX, 인프라 교육
팀 프로젝트를 진행하며 EKS를 활용한 MSA형태의 K8S환경 구축 프로젝트 진행
2022 조선 해운 빅데이터 활용 아이디어 공모전
한국해양대학교 조선 해운 전주기 빅데이터 센터
수상 내역 : 최우수상
주제: 머신러닝 기반 내륙 물류거점 최적 입지 선정 방법에 대한 아이디어
자격증
AWS Certified SysOps Administrator
Associate | Amazon Web Services(AWS)
2024.09.
네트워크관리사
2급 | 한국정보통신자격협회
2020.05.
자기소개
사람 중심의 서비스를 만드는 개발자, 김민식 입니다.
저는 사람들의 삶에 긍정적인 영향을 주고, 더 나은 세상을 만드는 데 기여할 수 있는 서비스를 개발하는 것에 큰 열정을 가지고 있습니다. 단순히 기술적인 기능을 구현하는 개발자가 아닌, 사용자의 니즈를 깊이 공감하고 이해하며, 그들의 삶을 진정으로 풍요롭게 만드는 서비스를 만들고자 끊임없이 노력합니다.
과거 프로젝트 경험을 통해 '사용자 중심'의 서비스 개발이 얼마나 중요한지 깨달았습니다. 특히, 해커톤에 참여하여 '전통 시장 살리기' 서비스를 개발했던 경험은 제 가치관에 큰 영향을 주었습니다. 당시 풀스택 개발 및 인프라 담당으로서, 기존 플랫폼의 강점과 새로운 기술을 접목하여 사회적 문제 해결에 기여하는 서비스를 개발했습니다. 이 과정에서 사용자 인터페이스, 접근성, 편의성 등을 면밀히 분석하고 개선하며, 사용자 경험을 최우선으로 고려하는 개발 방식을 체득했습니다.
프로젝트의 성공적인 결과를 통해 '기존 자원을 새로운 방식으로 활용하여 사회적 문제를 해결하고, 동시에 사용자에게 새로운 가치를 제공할 수 있다'는 가능성을 확인했습니다. 또한, 서비스 개발 과정에서 사용자와의 끊임없는 소통과 피드백을 통해 서비스를 개선하고 발전시켜나가는 경험은 앞으로 제가 개발자로 성장하는 데 소중한 자산이 될 것입니다.
저는 앞으로도 사람들의 목소리에 귀 기울이고, 그들의 니즈를 충족시키는 서비스를 만드는 데 집중할 것입니다. 끊임없이 배우고 도전하며, 사람들의 삶에 긍정적인 변화를 가져올 수 있는 혁신적인 서비스를 만들어 나가겠습니다.
["왜?"를 통한 최적화된 서비스 개발]
기술을 선정할 때 항상 "왜?"라는 생각을 가지고 프로젝트를 진행했습니다.
"인플루언서와 광고주를 매칭시켜 주는 플랫폼 개발" 프로젝트에서 시스템을 관리하고 확장성을 높이고자 노력한 경험이 있습니다.
다양한 이커머스 사이트들은 물품 검색, 이벤트 페이지, 구매 페이지 등 특정 서비스에 트래픽이 집중되는 현상을 보입니다. 실제 서비스 환경과 유사한 조건에서 MSA를 적용하여 트래픽 분산 및 서비스 확장성을 확보하고자 했습니다.
Spring 기반 MSA 아키텍처를 구축하여 서비스 간 결합도를 낮추고 유연한 시스템을 설계했습니다. Spring Cloud Gateway를 API Gateway로 활용하여 외부 요청을 각 서비스로 라우팅하고, Feign Client를 통해 서비스 간 통신을 간소화했습니다. 특히, Spring 기반 서비스 환경에 최적화된 Netflix Eureka를 서비스 디스커버리로 채택하여 Istio와 같은 범용 서비스 메쉬보다 효율적인 통신 환경을 구축했습니다.
MSA 확장 과정에서 JWT 토큰 관리의 효율성을 높이기 위해 Redis를 도입했습니다. 관계형 DB 대신 Redis를 사용하여 토큰 정보를 관리함으로써 DB 부하를 줄이고 응답 속도를 향상시켰습니다. 이를 통해 무결성을 유지하면서도 서비스 확장에 따른 성능 저하 문제를 해결하여 원활한 서비스 제공을 가능하게 했습니다.
[공공기관 인턴, 자동화로 프로세스 도입 ]
공공기관 인턴 업무 당시, 집행 등록이나 수행일지 검수와 같은 업무 프로세스를 자동화하는 과정에서 이해관계의 충돌로 어려움을 겪은 경험이 있습니다.
집행등록, 개별 메일 발송과 같은 업무들은 일정 주기마다 반복되는 업무들이었고 이러한 업무를 처리하느라 사업계획서 검토와 같은 고부가가치 업무에 상대적으로 적은 시간을 할당할 수밖에 없었습니다. 이를 해결하고자 부서 내 자동화가 필요한 업무들에 대해 파악한 후 실무진 분들께 단순 반복 업무의 자동화를 건의드렸습니다.
이 과정에서 자동화의 필요성에 대해 의구심을 품는 팀원분들이 계셨고 저는 그들을 설득해야 했습니다. 팀원들의 입장을 이해하고, 어떤 부분에서 갈등이 발생하였는지 원인을 파악하고자 팀원 개개인의 의견을 듣고 문제점을 정리하고 관련 사례들을 분석하여 문제에 대한 해결 방안을 면밀히 작성하였습니다. 이와 더불어 자동화를 통해 업무 능률을 향상시킨 기업들의 예시를 들며, 업무 자동화의 필요성을 제시하였습니다.
이후, 자동화를 통해 얻을 수 있는 기대효과에 대한 PPT를 제작하고 발표했습니다.
논리적인 근거와 사례를 바탕으로 최대한 객관적인 입장에서 팀원들을 설득하고자 노력하였고, 결국 팀원들의 긍정적인 반응을 이끌어 내며 원활하게 협업을 진행할 수 있었습니다.
그 결과, 집행 등록과 메일 발송, 수행일지 작성 등 총 4가지의 업무를 자동화할 수 있었고, 기존에 2주가 걸리던 업무를 3일로 단축시킬 수 있었습니다.
프로젝트 이후, 협업 과정에서 다양한 시각으로 문제를 바라보며, 팀원의 입장을 이해하고 소통하는 것이 얼마나 중요한 요소인지 깨닫게 되었습니다. 현재는 모든 일을 논리와 근거를 바탕으로 진행하고자 노력하고 있으며, 소통에 문제가 발생했을 때는 이에 대한 원인을 파악하고 분석함으로써 동일한 문제가 발생하지 않도록 노력하고 있습니다.