미리보기
- 직업
- Backend Developer
- 이름
- 김종근
- 간단소개
- IT 기술로 더 나은 세상을 만드는 개발자의 사회적 역할에 매료되어 개발자의 길을 걷게 되었습니다. 단순히 주어진 기능을 구현하는 것을 넘어, 내가 만드는 서비스가 사용자에게 어떤 가치를 제공할 수 있을지를 깊이 고민하며, 이러한 가치를 더 효과적으로 전달하기 위해 유연하고 확장 가능한 아키텍처와 설계를 고민하는 것을 좋아합니다. 또한, 협업의 가치를 중요하게 생각하며, 코드를 작성할 때 다른 개발자가 제 의도를 명확히 이해할 수 있도록 세심하게 신경 씁니다. 이를 통해 서비스 품질을 높이고 팀의 생산성을 향상시키기 위해 노력하고 있습니다. ‘개발자의 또 다른 고객은 동료 개발자’라는 생각을 바탕으로, 협업 과정에서 발생하는 문제를 적극적으로 해결하며 커뮤니케이션과 시스템을 개선하려고 합니다. 함께 일하고 싶은 동료로 인정받기 위해 지속적으로 성장하고자 합니다.
자기소개
- 자기소개
[문제를 적극적으로 해결하는 개발자가 되고자 합니다]
경영학을 복수전공하며 비즈니스 문제를 인식하고 해결책을 제시하는 조별 과제를 진행하면서, 구체적인 실행보다는 막연한 방향성만을 제시해야 하는 데 아쉬움을 느꼈습니다. 데이터 분석을 공부하던 중 개발자라는 직무를 알게 되었고, 생각한 문제를 직접 서비스로 구현하는 역할에 매료되었습니다. 경영학이 문제를 인식하는 데 초점을 둔다면, 개발은 인식된 문제를 기술로 해결하는 분야라고 생각합니다. 저는 경영학적 소양을 바탕으로 문제를 인식하고, 이를 소프트웨어 개발 기술로 적극적으로 해결하는 개발자가 되고 싶습니다.
[공유를 통해 함께 성장하는 문화를 지향합니다]
요즘 세상은 좋은 정보를 숨기고 혼자만 알자는 분위기가 있지만, 개발자들은 오픈소스, 테크 블로그, 컨퍼런스 등 공유에 앞장서는 독특한 문화를 가지고 있습니다. 이러한 공유 문화가 결국 자신을 성장시키고, 건강한 개발자 생태계를 만든다고 믿으며, 저도 이런 문화를 만들어나가기 위해 노력하고 있습니다.
동아리에서 CS 스터디를 할 때, 우아한형제들의 부트캠프인 우아한테크코스의 시스템을 벤치마킹하여 학습한 내용을 정리하고 발표하는 자리를 마련했습니다. 다른 사람에게 설명하기 위해 스스로 완전히 이해하고 납득될 때까지 공부했고, 잘 전달하기 위해 발표를 정성껏 준비했습니다. 시간이 오래 걸렸지만 이렇게 습득한 지식을 제 것으로 만들기에 효과적이었고, 공유를 통해 동아리원들이 함께 빠르게 성장할 수 있음을 경험했습니다.
이러한 경험을 바탕으로 사내에서 <SQL 안티패턴>, <헤드 퍼스트 디자인 패턴> 관련 스터디를 제안하여 구성원들과 함께 성장하는 문화를 만들어가고 있습니다.
기술 스택
- 기술 스택
- Java
- Spring Boot
- MySQL
- Redis
- GitHub
- Git
- Docker
- docker-compose
경력
- 회사명
- 티맥스 핀테크(Tmax Fintech)
- 직책 • 부서
- Backend 연구원 • 연구본부
- 근무 기간 (근무 형태)
- 2023.07. - 재직 중
- (1년 6개월 | 정규직)
- 담당 업무
문제 정의:
개발 인력의 도움 없이도 공제보험 상품을 설계하고 출시할 수 있는 시스템 필요
공제회 직원들이 익숙한 Excel 수식과 유사한 방식으로 공제보험료를 계산하고 상품을 관리할 수 있는 기능 개발 필요
주요 기여 및 문제 해결:
요구사항 분석, 데이터 모델링, 시스템 설계 및 API 개발을 주도하여 상품 팩토리 구축
직원들이 친숙한 환경에서 수식을 입력할 수 있도록 Excel 유사 수식 입력 기능 설계 및 구현
공제보험료 계산 모듈 개발 시 SOLID 원칙과 책임 연쇄 패턴을 적용하여 유지보수성과 확장성 향상
JSON 형태로 저장된 매트릭스 데이터를 Redis 캐싱 및 키-값 구조로 변환하여 조회 성능 최적화
CI 프로세스에 정적 분석 도구(SonarQube) 도입하여 코드의 취약점 분석 및 품질 개선
사용 기술: Java 11, Spring Boot 2.9, Tibero, Redis, SonarQube
개요:
공제보험 프로젝트에서 빈번한 기획 변경으로 인해 데이터베이스 스키마 변경이 자주 발생하고, 수작업으로 DB 형상 관리를 하면서 휴먼 에러와 개발 생산성 저하 문제 발생
문제 해결 방향:
오픈소스 데이터베이스 마이그레이션 툴인 Flyway를 도입하려 했으나, Flyway가 Tibero DB 를 공식 지원하지 않아 직접 지원 기능을 구현 결정
주요 역할:
Flyway 코드 분석: DB 벤더별 모듈 구조를 파악하고 Tibero 지원을 위한 모듈 개발 방향 설정
기능 구현: Tibero의 SQL 문법과 객체 타입을 고려하여 Flyway의 주요 명령어(migrate, baseline, info, repair, validate, clean)가 정상 동작하도록 기능 개발
테스트 및 검증: 구현한 기능에 대한 단위 테스트와 통합 테스트를 통해 안정성 확인
라이브러리 배포: JitPack과 GitHub Releases를 활용하여 라이브러리로 배포, 프로젝트에서 손쉽게 활용 가능하도록 환경 구축
CI/CD 자동화: GitHub Actions를 이용해 코드 변경 시 자동으로 빌드 및 배포가 이루어지도록 설정하여 운영 효율성 향상
성과:
데이터베이스 형상 관리 자동화를 통해 휴먼 에러 감소 및 개발 생산성 향상
개발, 검증, 운영 환경의 DB 스키마 분리가 가능해져 병렬 작업 및 QA 효율성 증대
사용 기술: Java, Flyway, Tibero, GitHub Actions, JitPack, Gradle
개요:
문제점:
공식적인 Tibero Docker 이미지 부재로 내부에서 사용하는 비공식 이미지가 컨테이너 재기동 시 데이터베이스 연결 불가 등의 문제 발생, 컨테이너 삭제 및 재생성이 매번 필요하여 개발 생산성 저하
필요성:
안정적인 개발 환경 구축과 테스트 효율성 향상을 위해 Docker 환경 개선 필요
주요 역할:
문제 분석:
Tibero의 기동 단계(Shutdown → Nomount → Mount → Normal)를 이해하고, 컨테이너 재실행 시 발생하는 BOOT FAILED 오류의 원인 파악
로그 분석을 통해 이전 종료 시 남은 프로세스나 파일이 재기동에 영향을 준다는 것 확인
해결 방안 적용:
Tibero 재기동 시 자동으로 클린업 이루어지도록 설정
쉘 스크립트에 Tibero 프로세스의 실행 여부를 확인하고 적절히 기동하는 로직 추가하여 재실행 시 안정성 확보
환경 최적화:
초기 설정 스크립트를 수정하여 컨테이너 최초 실행 시에만 동작하도록 최적화하여 기동 시간 단축
zstd 로 압축하여 Docker 이미지의 크기를 1.5GB에서 401MB로 감소시켜 빌드 및 배포 효율 향상
성과 및 결과:
개발 생산성 향상: 안정적인 Docker 환경을 구축하여 개발 및 테스트 과정의 효율성 높임
인프라 효율 개선: Docker 이미지 최적화로 저장 공간 절약하고 빌드 및 배포 시간 단축
프로젝트 기여: Flyway의 Tibero 지원 기능 개발 시 테스트 환경의 안정성 확보하여 전체 프로젝트의 개발 속도와 품질 향상
사용 기술: Tibero 7, Docker, Shell Script, Linux
배달 업계 디지털 공제보험 플랫폼 개발 - 상품 팩토리 & 보험료 계산 파트
Flyway Tibero 오픈소스 개발
(상세 설명 링크)
Tibero Docker 환경 개선 및 최적화 프로젝트
(상세 설명 링크)
- 회사명
- 네이버 웍스(Naver Works)
- 직책 • 부서
- 안드로이드 개발 인턴 • Mobile Dev
- 근무 기간 (근무 형태)
- 2021.07. - 2021.08.
- (2개월 | 인턴)
- 담당 업무
개요:
Kotlin Multiplatform Mobile 을 이용하여 안드로이드와 iOS에서 이용 가능한 파일 업/다운로드 라이브러리 구현
주요 요구사항:
어떤 프로젝트에서도 적용할 수 있도록 확장성이 있어야함
Kotlin Multiplatform Mobile(kmm)을 사용해서 구현
파일 일시정지, 이어받기(이어보내기), 취소 기능 구현
주요 역할:
파일 업/다운로드 앱 개발 시 수반되는 공통적인 비즈니스 로직을 KMM을 통해 모듈화 시킴으로써 개발 생산성 향상
HTTP의 multipart와 range request 스펙에 맞춰 파일 업/다운로드 기능을 구현함으로써 웹 호환성 및 유지보수성을 높임
Dagger Hilt(DI Framework)를 통해 프로젝트 내 의존성을 관리하여 클래스 간 느슨한 결합도를 유지함
비고:
백엔드 인턴이었으나 회사 내부 사정상 안드로이드 관련 일을 하게 됨
사용기술 : Kotlin, Android Studio, KMM
프로젝트
- 프로젝트명
- AI 기반 패션 스타일링 추천 서비스 프로젝트 - O't MZ
- 소속/기관명
- SSAFY
- 프로젝트 기간
- 2024.02. - 2024.03.
- (2개월)
- 프로젝트 설명
추천 알고리즘 API 개발: 코사인 유사도 방식의 추천 알고리즘을 구현해, 사용자 별 맞춤형 추천 코디 랭킹 및 광고 배너 API 개발
코디보드 화면 기능 개발: Konva-vue 라이브러리를 사용해, 디지털 옷장에 저장된 옷 이미지들을 조합해 코디를 완성시킬 수 있는 화면 기능 개발
함께 코디하기 기능 개발: Openvidu를 이용하여 websocket 기반 실시간 음성 채팅 기능 및 코디보드 동기화 기능 개발
API 응답 속도 개선: 데이터 변경이 빈번하지 않는 조회성 API의 응답 속도를 개선하기 위해 Redis 기반 캐시 스토리지를 구축하여 API 응답 속도 개선 (60% 단축)
팀장으로써 프로젝트 일정 관리 및 JIRA와 gitLab을 이용한 협업 프로세스 관리
AI를 기반으로 유저의 패션 스타일을 진단하여 유사한 코디를 추천해주고, 디지털 옷장 기능을 통한 코디 기능을 제공하는 모바일 기반 웹 서비스
팀 구성: 프론트 3 / 백엔드 2 / AI 1
역할: 팀장, 백엔드 개발, 일부 프론트 개발
주요 업무 및 성과:
사용 기술: Spring boot, Spring Security, OAuth 2.0, Spring Data Jpa, Redis, MariaDB, Docker, Nginx, Vue.js, OpenVidu, Websocket
- 프로젝트명
- 축제 부스 전용 스마트 오더 서비스 프로젝트 - fest'O
- 소속/기관명
- SSAFFY
- 프로젝트 기간
- 2023.04. - 2023.05.
- (2개월)
- 프로젝트 설명
상품, 주문, 알림 도메인에 관련된 핵심 비즈니스를 저수준의 외부 영역과 분리하기 위해 핵사고날 아키텍처를 따르는 설계를 고려하여, 변경과 확장에 유연한 개발을 경험
팀장으로서 원활한 프로젝트를 위해 Jira를 이용한 스프린트 단위의 개발 일정을 관리했고, 3Ls 회고법(Liked, Learned, Lacked)을 따른 주차별 회고를 주도하는 협업을 경험
축제 참여자들이 축제 부스 이용 및 구매를 줄을 서서 기다리지 않고도, 주문할 수 있는 스마트 오더 앱 개발 프로젝트
팀 구성: 모바일 3 / 백엔드 2
역할: 팀장, 백엔드 개발
주요 업무 및 성과:
사용 기술: Spring boot, Spring Data JPA, MariaDB, AWS EC2, Jenkins, Docker, Nginx
- 프로젝트명
- 온라인 릴레이 합주 서비스 프로젝트 - Collusic
- 소속/기관명
- 개인
- 프로젝트 기간
- 2022.08. - 2022.12.
- (5개월)
- 프로젝트 설명
소셜 로그인 기능: Spring Security를 이용해 OAuth2.0을 준수한 (네이버, 카카오, 구글) 로그인 기능 구현. Strategy Pattern을 고려한 설계를 통해 추후 소셜 서비스의 추가/제거에도 유연한 변경이 가능하도록 추상화하였음
JWT 기반 인증: Cookie-Session 방식이 서버의 Sacle out에 유리하지 못한 구조임을 해결하기 위해 JWT 기반 인증 방식의 인증/인가 기능을 개발하였고, 임의로 무효화시킬 수 없다는 JWT의 단점을 보완하기 위해 Redis를 이용해 토큰 블랙리스트 기능을 개발하였음
프로필 이미지 업로드 기능: S3를 이용해 사용자 프로필 이미지 업로드 기능을 구현하였고, S3 버킷에 대한 부하와 비용 절감을 위해 CloudFront를 적용함. 불필요하게 큰 이미지들을 관리하기 위해 AWS Lambda를 통한 서버리스 방식으로 리사이징 프로세스를 구축함 (자세히)
동시성 문제 해결: 프로젝트(project) 별로 10개의 트랙(Track)만 등록 가능하다는 비즈니스 요구사항과 달리 10개 이상의 트랙이 생성되는 문제를 발견. Optimistic Lock을 이용하여 엔티티에 대한 동시성 문제 해결함
TV 프로그램 <놀면 뭐하니?> ‘유플래시' 편에서 영감을 받은 서비스로, 녹음을 기반으로 한 온라인 릴레이 음악 합주 플랫폼 웹 서비스
팀 구성: 프론트 2 / 백엔드 2
역할: 백엔드 개발
주요 업무 및 성과
사용 기술: Spring boot, Spring Security, OAuth2.0, Spring Data Jpa, Redis, MySQL, AWS S3, AWS Lambda, AWS CLoudFront, Docker, Nginx, Github Action
- 프로젝트명
- 나이키 신상 알림 프로젝트
- 소속/기관명
- 개인
- 프로젝트 기간
- 2022.01. - 2022.01.
- (1개월)
- 프로젝트 설명
Flow: 나이키 공식 홈페이지에서 상품 정보를 크롤링 -> 크롤링된 상품 정보와 DB에 저장된 상품 정보를 비교하여 신상품을 필터링 -> 신상품으로 분류된 데이터에 대해 Slack으로 알림 전송
Spring Batch 사용 경험를 이용하여 (크롤링 - 파싱 - db 데이터 비교 - 저장) 흐름을 갖는 배치 애플리케이션 개발을 경험함
병렬 처리가 가능한 크롤링 작업을 개선하기 위해 CountDownLatch를 이용하여 상품 목록을 페이지 단위로 병렬로 크롤링 처리하여 작업 시간을 75% 단축 (40초 → 10초)
나이키 멤버스 데이 기간 동안 나이키 공식 사이트에서 불시에 업로드 되는 신상품 정보 감지해 슬랙 알림을 받아 볼 수 있는 서비스
팀 구성: 1인
주요 역할 및 성과
사용 기술: Spring batch, MySQL, crontab, Slack Webhook
- 프로젝트명
- 개발자 미라클 모닝 웹 프로젝트 - 으쌰으쌰
- 소속/기관명
- 개인
- 프로젝트 기간
- 2020.03. - 2020.08.
- (6개월)
- 프로젝트 설명
RESTful 원칙을 준수한 API 명세 작업 및 개발을 주도했으며, 원활한 협업을 위해 Swagger를 도입하여 문서 자동화 작업을 경험함.
CORS 이슈를 처음 마주해, 이를 이해하기 위해 웹 보안 정책인 SOP에 대해 이해하고 CORS 이슈를 해결함
API마다 로그인된 사용자를 식별하는 로직이 중복해서 나타남을 발견하고, Spring AOP를 이용하여 횡단 관심사 로직과 비즈니스 로직을 분리하여 코드를 개선함
실시간 채팅 기능 구현을 위해 Stomp 기반 Websocket 채팅 서버를 개발하였음. 다수의 websocket 서버 간의 통신을 고려해 Redis Pub/Sub 기능을 이용하여 메시지 브로커 구현
이른 새벽 시간을 활용하여 학습 및 자기 개발을 하려는 개발자들을 위한 동기부여 웹 서비스
팀 구성: 프론트 1 / 백엔드 1
역할: 백엔드 개발
주요 업무 및 성과
사용 기술: Spring boot, Spring OAuth2.0, Spring boot websocket, Spring data JPA, H2, Redis
포트폴리오
- 타입
- URL
교육
- 소속/기관
- SSAFY(삼성 청년 SW 아카데미)
- 종류 | 전공명/전공계열
- 사설 교육
- 재학 기간 (재학 상태)
- 2022.07. - 2023.06.
- 소속/기관
- 전남대학교
- 종류 | 전공명/전공계열
- 대학교(학사) | 주: 자율전공 / 복: 경영학 / 부: 소프트웨어공학
- 재학 기간 (재학 상태)
- 2014.03. - 2021.02. (졸업)
- 소속/기관
- 조선대학교부속고등학교
- 종류 | 전공명/전공계열
- 고등학교 | 인문계(문과 계열)
- 재학 기간 (재학 상태)
- 2011.03. - 2014.02. (졸업)
대외활동
- 활동명
- Kakao x goorm 구름톤(9oormthon) 4기
- 소속/기관
- Kakao & goorm
- 활동 연도
- 2022
- 활동 상세 설명
소 개 : Kakako와 goorm에서 주최하는 해커톤인 구름톤(https://9oormthon.goorm.io/)에 참여하여 <제주도 잉여 여행용품 나눔 플랫폼 - 제주고올래> 개발
기 간 : 2022.12.13~16 (4일)
팀 원 : 5명 (기획 1, 디자이너 1, 프론트 개발 2, 백엔드 개발 1)
개발환경 : Java, Spring boot, MySQL, Docker, Spring Data JPA, AWS EC2, AWS S3Next.js
담당역할 : 백엔드 개발 및 배포 담당
- 활동명
- 부스트 코스 서포터즈 BOOSTER 2기
- 소속/기관
- 커넥트재단
- 활동 연도
- 2020
- 활동 상세 설명
부스트 코스 웹 프로그래밍 과정 강의 수강
부스트 코스 프로젝트 제출 및 리뷰 반영
학습한 내용 및 후기 블로그 & SNS 업로드
소 개 : 네이버 커넥트 재단의 부스트 코스 웹 과정 서포터즈 활동 및 강의 수강
기 간 : 2020.02 ~ 2020.04 (2개월)
주요 활동 내용
- 활동명
- KISA&국민은행 핀테크 해커톤
- 소속/기관
- KISA & 국민은행
- 활동 연도
- 2019
- 활동 상세 설명
회원 가입 및 로그인 기능 구현
가상 통장(용도, 거래내역, 잔액 등)에 대한 REST API 개발
소 개 : KISA&국민은행 핀테크 해커톤에 참여하여 <통장 쪼개기 웹 서비스 “In&OUT”> 개발
기 간 : 2019.06 (2박3일)
팀 원 : 5명 (기획 1, 프론트 개발 2, 백엔드 개발 2)
개발환경 : Java, Spring boot, h2 DB, React, Spring data JPA, AWS EC2
주요 구현 내용
- 활동명
- 교내 IT 개발 동아리 활동
- 소속/기관
- ECONOVATION
- 활동 연도
- 2019
- 활동 상세 설명
동아리 활동으로 두 차례의 안드로이드 어플 개발 프로젝트를 경험함
안드로이드 개발 멘토로써 신입 회원들의 프로젝트 진행에 기여함
동아리 회비 및 재정 관리
두 차례 활동 결과물에 대한 최종 발표회 기획/운영
동아리방 건물 야간 출입 신청 웹 기획/개발 (https://drive.google.com/file/d/1SIcsS6yhYmHhmF28uMWRpH1vMHYeJzmq/view?usp=sharing)
8명의 동아리 구성원들과 해커톤 TF팀(운영팀, 기획 및 디자인팀, 홍보팀)을 결성
Slack과 Trello 등 협업 툴을 적극 활용하여 해커톤 운영을 위한 일정 관리 및 업무를 공유함
운영팀에 소속되어 해커톤 참가자 관리에 대한 운영을 전담하며 참가자들이 해커톤을 원활하게 참여할 수 있도록 도왔음
운영팀으로서 학교 및 기업 담당자와 주기적인 미팅에 참석하여 해커톤 전반에 걸쳐 필요한 일정 계획 및 장소 등에 대한 의사결정에 참여하였음
개발 프로젝트
동아리 운영
2019년 동아리 총무로 임명받아 1년간 회장단으로써 동아리를 운영함
해커톤 주최
소프트웨어 개발에 대한 관심과 열정에 비해 관련 행사 및 대회 부재 등 지방 대학생 개발 문화를 활성화하기 위해 학교 및 KT, 지역 기업들과 협약을 통해 해커톤을 주최하였음 (https://github.com/econovationhackathon/hackathon)
자격증
- 자격증명
- SQLD
- 점수/급 | 발급 기관
- 합격 | 한국데이터산업진흥원
- 취득월
- 2022.12