채용공고 올리기

황호민님을 응원해보세요!

이직/구직 중이에요

미리보기

기본 정보

이름
황호민
직업
백엔드 개발자
간단 소개

저는 Java와 Spring Boot를 활용한 백엔드 개발에 강점을 가진 소프트웨어 엔지니어입니다. MSA 환경에서의 시스템 전환 및 최적화, ORM을 활용한 데이터 처리 개선, OAuth 기반 인증 시스템 구축, 그리고 무중단 배포를 위한 CI/CD 파이프라인 구축 경험이 있습니다. 또한, Next.js를 사용하여 간단한 프론트엔드 개발 및 배포도 가능합니다. 다양한 프로젝트에서 백엔드 최적화와 시스템 안정성을 개선하며, 유지보수성을 높이는 데 기여했습니다.

기술 스택

기술 스택

Java, Spring Boot, MySQL, Oracle, next.js13, Node.js, Google Cloud Platform, AWS

경력

회사명

스윗코리아

직급 | 부서 | 근무 유형

Integration engineer | User Relations Team

근무 기간

2023.05. ~ 2024.06. (1년 2개월)

담당 업무
  • 서드파티 앱 통합을 위한 플랫폼 설계 및 오픈 API 설계 경험

  • 성능 최적화를 위해 동기 코드를 비동기로 변환하여 시스템 처리 성능 및 응답 시간 단축

  • OAuth와 JWT 기반의 인증 시스템 구현 및 백오피스 관리 기능 개발

  • Next.js를 활용해 레거시 프로젝트를 재구축하고 프론트엔드 개선

  • 테크니컬 라이터와 협업하여 인하우스 툴 기능을 개선

  • 감사 로그 모니터링 앱 및 Jira, Confluence 연동 앱 개발 경험

회사명

웅진씽크빅

직급 | 부서 | 근무 유형

연구원 | 차세대 통합 인증 팀

근무 기간

2021.08. ~ 2023.04. (1년 9개월)

담당 업무
  • 마이크로서비스(MSA) 프로젝트 개발 경험

  • 스마트올 중학 관리자 백오피스 개발 경험

  • CI/CD 파이프라인을 AWS CodeDeploy로 자동화하여 배포 안정성 확보

  • EXPLAIN 쿼리를 사용하여 슬로우 쿼리 성능 최적화 및 데이터베이스 인덱스 분석

  • 회원권 실시간 배치 시스템 개발 및 MSA 환경에서 운영

  • ORM 도입을 통해 데이터 타입 명확화 및 코드 가독성 개선

프로젝트

프로젝트명

개발자 플랫폼 개발

소속/기관명

스윗코리아

프로젝트 기간

2023.12. ~ 2024.06.

프로젝트 내용

개발자 플랫폼 개발

[소개] 외부 개발자들이 Swit의 서비스를 손쉽게 이용할 수 있도록 오픈 API를 개발하고, 타사 서비스를 Swit 내에서 사용할 수 있게 App Store 운영 및 앱을 개발했습니다.

[역할]

  • 외부 서비스와의 통합을 위해 서드파티 앱 연동 플랫폼을 설계하고 개발

  • 외부 개발자들이 Swit API를 손쉽게 활용하도록 오픈 API 설계 및 SaaS 플랫폼 확장

  • 기존 동기 코드를 비동기 처리로 전환하여 응답 시간 단축 및 시스템 성능 개선

  • 외주 개발 코드의 리팩토링을 통해 시스템 성능 최적화, 안정성 및 유지보수성 향상

  • Swit 서비스의 감사 로그를 열람할 수 있는 앱 개발

  • Jira 및 Confluence와의 연동을 지원하는 앱 개발

[문제 해결 사례]

외부 SaaS API 응답 시간 지연 및 서비스 프리징 문제

  • 문제: 외부 SaaS 서비스에서 데이터를 가져오는 API 호출이 동기적으로 이루어져 응답 지연 및 간헐적인 서비스 프리징 발생

  • 해결 과정:

    • 문제 분석: 코드 검토를 통해 API 호출이 동기적으로 처리되고 있으며 페이지네이션이 적용되지 않아 타임아웃이 발생하는 것을 확인

    • 비동기 처리로 개선: async/await를 사용하여 API 호출을 비동기로 전환하고, 페이지네이션 기능을 추가하여 데이터 불러오는 양을 최적화

  • 결과: 응답 시간이 약 3배 개선되었고, 서비스 프리징 현상이 완전히 해소

JWT 토큰 리프레시 기능 부재 문제

  • 문제: JWT 토큰 만료 시 자동 갱신 기능이 없어 사용자에게 매번 OAuth 재인증 요구

  • 해결 과정:

    • 미들웨어에 인터셉터 로직을 추가하여 API 호출 시 토큰 유효성을 검사하고, 만료 시에만 리프레시 토큰을 통해 새 토큰 발급

    • 잘못된 토큰 또는 인증 오류 발생 시에만 OAuth 재인증을 시도하여 불필요한 API 호출을 최소화

  • 결과: 토큰 만료 시 자동 리프레시 기능으로 사용자 인증 불편함을 크게 줄였고, 전체적인 시스템 성능 개선

프로젝트명

인하우스툴 개발

소속/기관명

스윗코리아

프로젝트 기간

2023.05. ~ 2024.02.

프로젝트 내용

[소개] 테크니컬 라이터가 문서 작업 및 이메일 작성을 효율적으로 수행할 수 있도록 기존 인하우스 툴을 리팩토링하고 고도화했습니다.

[역할]

  • 기술 요구 사항을 분석하고 테크니컬 라이터와 협력하여 툴의 기능을 개선

  • GCP CloudBuild를 활용한 무중단 배포 파이프라인 구축

  • 기존 Flask와 바닐라 JavaScript로 구현된 레거시 프로젝트를 Next.js로 전환하여 재구축

  • 백오피스 툴에 OAuth 인증 적용으로 관리자 전용 로그인 기능 개발

[문제 해결 사례]

파일 기반 모놀리식 구조 및 가독성 저하 문제

  • 문제: 기존 인하우스 툴은 모든 코드가 하나의 파일에 집약되어 있었으며, DOM 조작이 바닐라 JavaScript 함수로 직접 처리되어 가독성이 낮고 유지보수가 어려웠습니다. 데이터는 인메모리 데이터베이스를 통해 파일로 저장되어, 데이터 안정성이 보장되지 않았습니다.

  • 해결 과정:

    • 아키텍처 개선: 코드가 한 파일에 몰려 있는 문제를 해결하기 위해 프론트엔드와 백엔드를 분리했습니다. 프론트엔드는 React로, 백엔드는 FastAPI로 전환하여 유지보수성을 높였습니다.

    • 데이터베이스 개선: 인메모리 DB가 파일에 데이터를 저장하던 구조에서 GCP Cloud SQL을 사용하는 RDBMS로 전환하여, 데이터 안정성을 확보했습니다.

    • 코드 모듈화: 기능별로 코드를 분리하고 React와 TypeScript를 활용하여 가독성을 높이고, 비동기 처리로 API 호출 성능을 개선해 유지보수에 용이한 구조를 구축했습니다.

  • 결과: 기능별 코드 분리로 관리가 용이해졌으며, 서비스의 안정성이 크게 향상되었습니다. 프론트와 백엔드의 분리로 유지보수가 쉬워졌고, 데이터 손실 문제도 해결되었습니다.

인증 시스템 부재 문제

  • 문제: 기존 인하우스 툴에는 인증 시스템이 없어 누구나 접근이 가능해 보안 위험이 있었습니다. 특정 권한을 가진 사용자만 접근해야 하는 데이터에도 제약 없이 접근할 수 있는 문제가 있었습니다.

  • 해결 과정:

    • OAuth 인증 도입: 외부 OAuth 서비스를 사용해 인증된 사용자만 툴에 접근할 수 있도록 설정했습니다. 인증된 사용자는 JWT 토큰으로 관리하여, 해당 토큰을 사용해 권한을 검증하는 방식으로 보안을 강화했습니다.

    • 미들웨어 적용: 백엔드에 OAuth 인증 미들웨어를 추가하여, 인증된 사용자만 백오피스에 접근할 수 있도록 설정했습니다.

  • 결과: 테크니컬 라이터와 같은 특정 권한을 가진 사용자만 툴을 사용할 수 있게 되어 불필요한 접근을 차단함으로써 보안성이 크게 향상되었습니다.

수동 배포로 인한 휴먼 에러 및 비효율성 문제

  • 문제: 기존에는 수동으로 VM에서 스크립트를 실행하여 배포해야 했기 때문에 휴먼 에러가 발생할 위험이 높았고, 배포 과정이 비효율적이었습니다.

  • 해결 과정:

    • CI/CD 자동화 구축: GCP CloudBuild를 사용하여 CI/CD 파이프라인을 구축하고, Cloud Run을 통해 컨테이너 환경에서 자동 배포되도록 전환했습니다. 이를 통해 수동 작업을 제거하여 배포 효율성을 높였습니다.

  • 결과: 휴먼 에러가 감소하고, 배포 시간이 단축되었으며, 배포 프로세스의 안정성이 크게 향상되었습니다.

프로젝트명

차세대 통합 학습 관리 시스템(LMS) 개발

소속/기관명

웅진씽크빅

프로젝트 기간

2022.01. ~ 2023.03.

프로젝트 내용

[소개] 기존의 모놀리식 LMS 시스템을 유아, 초등, 중학 서비스로 구분하여 마이크로서비스 아키텍처(MSA)를 도입했습니다. MyBatis에서 JPA로의 전환, 쿼리 최적화, 배포 자동화를 통해 시스템 확장성과 유지보수성을 개선했습니다.

[역할]

  • 각 서비스가 독립적으로 운영될 수 있도록 MSA 구조를 적용하여 확장성 향상

  • MyBatis에서 JPA로 전환하여 유지보수 생산성 향상

  • EXPLAIN 쿼리 분석을 통해 데이터베이스 인덱스 최적화 및 슬로우 쿼리 개선

  • CI/CD 파이프라인을 AWS CodeDeploy로 구축해 배포 자동화 및 운영 안정성 강화

[문제 해결 사례]

모놀리식 구조로 인한 성능 저하 문제

  • 문제: 기존 LMS 시스템은 유아, 초등, 중학 서비스를 단일 모놀리식 애플리케이션으로 운영하여, 무거운 이력 조회 쿼리가 다른 서비스에까지 영향을 미치며 성능 저하 문제를 야기했습니다.

  • 해결 과정:

    • 마이크로서비스 아키텍처(MSA) 도입: 각 서비스를 독립적인 마이크로서비스로 분리하여 유아, 초등, 중학 서비스를 개별적으로 운영할 수 있도록 했습니다. 이를 통해 서비스 간 간섭을 제거하고 확장성을 크게 향상했습니다.

    • REST API 및 게이트웨이 적용: 각 서비스 간 통신을 REST API로 구현하고 게이트웨이를 통해 중앙 집중식 관리와 독립성을 확보하여 유지보수성과 확장성이 향상되었습니다.

  • 결과: 무거운 쿼리로 인한 성능 저하 문제를 해결하고 각 서비스가 독립적으로 운영될 수 있도록 최적화하여 시스템의 안정성 및 사용자 경험이 크게 향상되었습니다.

슬로우 쿼리 및 인덱스 최적화 문제

  • 문제: 데이터베이스 쿼리의 성능이 저하되어 특정 서비스 사용 시 지연이 발생했습니다. 특히 인덱스가 제대로 적용되지 않아 슬로우 쿼리가 발생했습니다.

  • 해결 과정:

    • 쿼리 성능 분석: EXPLAIN 쿼리를 사용해 인덱스 적용 상황을 분석하고 성능이 저하되는 슬로우 쿼리를 최적화했습니다.

  • 결과: 쿼리 성능이 개선되어 서비스 응답 속도가 향상되었고, 전체 시스템의 처리 효율이 높아졌습니다.

수동 배포로 인한 비효율성 및 휴먼 에러 문제

  • 문제: 기존 배포 방식은 FTP를 통해 .class 파일을 수동으로 EC2 서버에 업로드하는 방식으로, 시간이 많이 소요되고 휴먼 에러 발생 가능성이 높았습니다.

  • 해결 과정:

    • 배포 자동화: 수동 배포 방식을 AWS CodeDeploy를 활용한 CI/CD 파이프라인으로 전환해 배포 과정을 자동화했습니다. 이를 통해 배포 시간 단축 및 안정성을 확보할 수 있었습니다.

  • 결과: 자동화된 배포 프로세스를 통해 배포 시간이 단축되고 오류 발생이 감소하여 운영 안정성이 크게 향상되었습니다.

프로젝트명

스마트올 중학 서버 유지보수 및 개발

소속/기관명

웅진씽크빅

프로젝트 기간

2021.08. ~ 2021.12.

프로젝트 내용

[소개] MSA 환경에서 스마트올 서비스의 서버를 유지보수하고, 관리자 백오피스를 개발하여 효율성을 높였습니다. 회원권 실시간 배치 시스템 개발과 데이터 타입 문제 해결을 통해 시스템의 가독성과 유지보수성을 향상했습니다.

[역할]

  • MSA 환경에서 회원권 실시간 배치 시스템 개발 및 운영

  • 기존 데이터베이스에서 조회한 데이터를 Object 타입으로 처리해 데이터 타입이 불명확한 문제를 ORM 도입으로 해결, 명확한 데이터 타입 관리와 코드 가독성, 유지보수성 향상

  • 스마트올 중학 서비스 관리자 백오피스 개발

[문제 해결 사례]

10만 이상의 회원권을 처리하는 배치 시스템에서의 동시성 문제

  • 문제: 회원권 관리 배치 시스템을 운영하면서 동시성 문제로 인해 회원권이 중복 가입되는 현상이 발생했습니다.

  • 해결 과정:

    • 비관적 락(Pessimistic Lock) 도입: 동시성 제어를 위해 비관적 락을 적용하여 회원권 데이터가 중복 등록되는 문제를 방지했습니다.

  • 결과: 동시성 문제가 해결되면서 회원권 중복 가입 문제를 예방하여 시스템의 안정성이 향상되었습니다.

데이터 타입 불명확성 문제 해결을 위한 ORM 도입

  • 문제: 기존 데이터베이스 조회 데이터가 Object 타입으로 관리되어, 데이터 타입 확인이 어려워 가독성과 유지보수성에 어려움이 있었습니다.

  • 해결 과정:

    • ORM 도입: 명확한 데이터 타입 관리가 가능하도록 ORM을 도입하여 코드의 가독성과 유지보수성을 개선했습니다. 이를 통해 각 데이터의 타입을 명확히 정의하고, 오류 발생 가능성을 줄였습니다.

  • 결과: 데이터 타입이 명확하게 관리되어 코드 가독성이 높아지고, 유지보수성이 크게 향상되었습니다.

1,000만 건 이상의 사용자 학습 데이터 마이그레이션

  • 문제: 스마트올 서비스의 중학 학습 데이터를 새로운 시스템으로 마이그레이션할 필요가 있었습니다.

  • 해결 과정:

    • 데이터 마이그레이션 최적화: 1,000만 건의 대량 데이터를 안정적으로 이전하기 위해 데이터 마이그레이션 프로세스를 최적화하고, 성능과 데이터 무결성을 고려한 전략을 설계하여 적용했습니다.

  • 결과: 대량 데이터 마이그레이션이 성공적으로 완료되어 시스템 이전 후에도 일관성과 성능이 유지되었습니다.

프로젝트명

BookNote

소속/기관명

개인 프로젝트

프로젝트 기간

2024.08. ~ 진행 중

프로젝트 내용

BookNote

책을 읽는 동안 떠오르는 다양한 생각들을 손쉽게 기록하고, 체계적으로 정리할 수 있는 웹 서비스입니다.

url: BookNote

README: Booknote_Wiki

GitHub

기능 구현

  • 링크: Naver Open API를 이용한 책검색

    • Naver Open API를 사용하여 주어진 검색어(query)로 책 정보를 검색

      Redis를 통해 캐시된 데이터를 우선 확인하고, 없을 경우 외부 API를 호출하여 데이터를 가져오는 로직으로 성능을 최적화

  • 링크: 활동 기록 조회 기능

    • 사용자 활동을 실시간으로 기록

    • 사용자의 활동 로그를 다양한 필터(기간, 활동 유형 등)로 조회

    • 비동기적으로 로그를 처리하여 시스템 성능에 영향을 주지 않음

  • 링크: 책순서 업데이트 기능

    • 실시간 책 순서 관리: 사용자가 책의 순서를 변경할 때 해당 정보가 즉시 Redis에 캐싱 일정 주기로 캐시된 데이터가 데이터베이스와 동기화

    • 비동기 데이터 동기화: Redis 캐시를 활용하여 책 순서를 즉시 반영하고, 주기적으로 데이터베이스에 반영함으로써 시스템 성능에 영향을 최소화

포트폴리오

URL

link

https://github.com/ghals5737

깃허브

교육

소속/기관명

충북대학교

종류 | 전공

대학교(학사) | 정보통신공학

재학 기간 | 재학 상태

2013.03. ~ 2021.02. | 졸업

대외활동

활동명

삼성 청년 소프트웨어 아카데미

소속/기관명

삼성 청년 소프트웨어 아카데미

연도

내용
  • 삼성전자 주관 개발자 양성 교육 과정 수료

  • 기본적인 CS 지식과 알고리즘을 학습하여 문제 해결 능력 향상

  • 2개의 프로젝트에서 팀 리더 역할 수행

  • 모든 프로젝트에서 우수상 수상

  • 프로젝트 진행 중 프론트엔드, 백엔드, 인프라 전반을 경험

활동명

네이버 부스트 캠프

소속/기관명

네이버 부스트 캠프

연도

내용
  • 네이버 커넥트 주관 웹 개발자 양성 교육 과정 수료

  • JavaScript와 Node.js 학습

  • CS 기본 지식 학습

  • 미션 기반의 코드 리뷰 중심 교육 진행

활동명

삼성 청년 SW 아카데미 자율 프로젝트 우수상

소속/기관명

삼성 청년 소프트웨어 아카데미

연도

내용

삼성 청년 SW 아카데미 공통 프로젝트에서 1등 수상

자격증

자격증명

정보처리기사

점수 | 발급기관

기사 | 한국산업인력공단

취득연월

2019.11.

댓글