Profile picture

프로필

포지션: Backend Developer (full-stack)

경력: 3년차

전문 분야: Spring Framework, 엔터프라이즈 애플리케이션 개발

직무: WEB, 응용S/W 프로그래머

핵심 기술 스택

Backend

  • Java(11, 21), Spring FrameworkJava 1.8 → 21 / Spring v4 → v5 / javax → Jakarta EE 마이그레이션 경험 (마우스를 올려보세요!)
  • JPA(Hibernate), Spring Data레거시 프로젝트에 Hibernate 및 Spring Data 이식 경험
  • Linux(Ubuntu)Ubuntu 및 Web Server 구축 가능, CLI/ vi 환경

Database

  • RDB (Oracle, Postgre, Firebird)DB설계 및 상급 Query(통계) 최적화 가능
  • NoSQL (Elastic-Search)간단한 데이터 처리 및 High-Level Client를 이용한 플러그인 개발
  • CSDB (PTC Windchill)PTC Windchill 환경에서의 DataModule 관리 및 서비스 레이어 구현

Frontend

  • Vanilla JavaScript (ES6), CSS초중급 수준의 JavaScript/CSS 실무 가능 (해당 사이트 수준)
  • JSP, Servlet (2.0, 3.0)SSR 페이지 제작 가능 (CSR 프레임워크 학습 가능)

DevOps

  • 버전 관리 시스템 및 이슈트래커 도입연구소장 지시에 따른 개발 프로세스 개선 프로젝트
  • SVN → GitHub Teams 마이그레이션SVN에서 GitHub Teams로의 성공적인 마이그레이션 완료
  • Issue Tracker 와 VSC 관 연동JIRA 이슈트래커와 연동된 GITG CI/CD 파이프라인 구성
  • 코드 관리 체계 개선체계적인 코드 리뷰 프로세스 도입 및 코드 변경이력 추적 시스템 확립

주요 프로젝트

버전 관리 시스템 및 이슈트래커 도입

사용 기술: Git, GitHub Teams, JIRA, CI/CD

"또 코드가 날아갔어요..." 팀에서 자주 들리던 한숨 소리였습니다. SVN으로 관리되던 프로젝트에서는 코드 충돌과 손실이 빈번했고, 머지 작업은 개발자들의 악몽이었습니다.

"전 회사에서 GitLab과 RedMine을 사용해봤는데, 현재 상황보다 훨씬 효율적이었어요. 다만 몇 가지 불편한 점이 있었죠." 저는 대표이사님께 이전 경험을 바탕으로 개선안을 제안했습니다. "우리 회사에 Git을 도입하고 개발 문화를 바꿀 수 있겠어요?" 대표님의 이 질문에 저는 자신 있게 프로젝트를 맡게 되었습니다.

주요 해결 과정 및 성과:

  • 이전 RedMine 사용 시 불편했던 점을 보완한 JIRA 연동 시스템 구현
  • 해외 개발자들과 "카페 코드 리뷰 세션"을 정기적으로 진행하며 협업 문화 확산
  • 기존 1~2시간 걸리던 머지 시간을 30~40분으로 단축시키는 효율적 워크플로우 확립

"초반엔 적응에 힘들었지만, 이제 코드 날아가는 걱정 없이 개발에만 집중할 수 있어요!"라는 개발자들의 피드백이 가장 큰 보람이었습니다. 대표이사님도 "개발 문화가 완전히 달라졌다"고 평가해주셨습니다.

S1000D 기술 문서 관리 시스템 개발 및 성능 최적화

사용 기술: Java, XML, CSDB(Windchill), 멀티스레드 프로그래밍

군용 정비 매뉴얼을 관리하는 S1000D 시스템이 동시 접속 시 멈추는 심각한 문제에 직면했습니다. 사용자(30~40 명)들이 접속할 때마다 시스템이 느려지거나 요청이 무시되는 현상이 발생했고, 이는 일정에 직접적인 영향을 미치고 있었습니다.

코드를 분석한 결과, 무분별한 멀티쓰레드 로직과 3,000줄이 넘는 거대한 단일 클래스하나의 if문 안에 400~500줄씩 직접 구현된 비즈니스 로직이 문제의 원인이었습니다. 레거시 시스템의 전형적인 사례였죠.

주요 해결 과정 및 성과:

  • 거대한 스파게티 코드(3,000줄)를 모듈화하여 100줄 수준으로 대폭 축소
  • 논블로킹 I/O와 멀티스레드 처리를 결합한 고성능 아키텍처 설계 (나중에 Apache Netty와 유사함을 발견)
  • 동시 접속 시 발생하던 요청 무시 현상 완전 해소로 시스템 신뢰성 회복

이 경험을 통해 얻은 가장 큰 교훈은 "스파게티 코드와의 싸움"에서 승리하기 위해서는 코드 구조화의 중요성과 멀티스레드 프로그래밍의 가치를 몸소 체험했다는 점입니다. 사용자들이 "시스템이 이제 정말 빨라졌다"고 피드백을 줬을 때 느낀 보람은 잊을 수 없습니다.

ORM 도입 프로젝트

사용 기술: Hibernate, JPA, Spring Data

"이 쿼리만 수정하는데 3시간이 걸렸어요..." 수백 줄의 생 SQL로 가득한 레거시 코드에서 해외 개발자들이 겪는 고통이었습니다. JDBC로 직접 SQL을 작성하는 방식은 개발 속도와 유지보수성에 심각한 병목 현상을 일으키고 있었습니다.

문제 해결을 위해 Hibernate ORM과 Spring Data를 단계적으로 도입하는 프로젝트를 제안했습니다. 레거시 프로젝트에 자꾸 새로운 모듈을 붙이는데 불안감을 표현했지만, 제가 준비한 데모를 보여드렸습니다: "15줄의 SQL 쿼리가 단 한 줄의 코드로 변환되는 모습"이 모두를 설득했죠.

주요 성과:

  • JDBC 생쿼리에서 Spring Data로 전환하여 SQL 작성 시간 50% 단축
  • 협업 개발자들을 위한 맞춤형 ORM 교육 과정 개발 및 진행
  • 새로운 기능은 ORM 기반으로 개발하고, 기존 코드는 우선순위에 따라 단계적 전환

이 프로젝트는 단순한 기술 도입을 넘어 베트남 팀과 생산성과 행복도를 높인 경험이었습니다. "쿼리 작성보다 실제 문제 해결에 집중할 수 있게 되었다"는 해외 개발자들의 후기는 잊을 수 없습니다.

Ollama 기반 챗봇 개발 프로젝트

사용 기술: Python, Flask, MSA, Ollama, Llama 3

"AI 챗봇으로 기술 문서를 검색하고 싶은데, 보안상 외부 API는 사용할 수 없습니다." 고객사의 요청이었습니다. 로컬 환경에서만 작동하는 AI 챗봇을 개발하는 도전이 시작되었습니다.

처음 Llama 3 70B 모델을 고려했지만, 무려 80GB의 그래픽 메모리가 필요하다는 사실에 놀랐습니다. "이렇게 큰 모델은 현재 예산으로는 불가능하겠네요." 현실적인 대안으로 16GB 그래픽 메모리에서 작동 가능한 Llama 3 8B 모델을 선택했습니다.

교범이 수정되면 그 값들을 자동으로 학습시키는 Flask 서버를 별도로 띄워서 지속적인 학습을 진행시켰습니다.

주요 성과와 도전:

  • 보안 요구사항을 충족하는 오프라인 환경의 AI 챗봇 구현
  • 하드웨어 제약(16GB VRAM)을 고려한 최적 모델 선정 및 구현
  • MSA 아키텍처 기반 Flask 서버 개발로 확장 가능한 시스템 설계

"ChatGPT만큼 똑똑하진 않지만, 전자교범을 안내하는 챗봇이 생겼다는 게 중요합니다." 이 프로젝트는 최신 기술의 한계와 현실적인 제약 속에서 최적의 균형점을 찾는 값진 경험이었습니다.