미리보기
기본 정보

안녕하세요, 4년차 백엔드 엔지니어 양태영입니다. 서버 사이드 개발과 데브옵스 분야를 아우르며, 안정성과 확장성을 모두 고려한 시스템 설계를 선호합니다. 개발에 관심이 많아 현업에서 Java, Python, Go 등 여러 언어를 두루 경험해보았습니다. 각 기술에 맞는 장단점을 고려하여 어떠한 환경에서도 빠르게 적응하여 해낼 수 있는 성장하는 개발자입니다 주요 강점 & 경험 - 서버 사이드 개발: Java/Spring, Go 기반의 API 및 백엔드 서비스 구축 - 이벤트 기반 아키텍처: RabbitMQ, AWS SQS를 활용해 비동기 메시징 시스템 설계·운영 - RDBMS: PostgreSQL · MySQL · Oracle (Oracle 온라인 강의 오픈 경험 보유) - NoSQL: MongoDB 기반으로 외부 플랫폼과 30만 건 이상의 상품 실시간 동기화 로직 개발 - 자동화와 효율화: 반복 업무를 CLI 도구로 자동화해 생산성 향상 - 오픈소스 참여: 직접 개발한 편의성 CLI를 오픈소스 커뮤니티에 배포 - 팀 협업 문화: 적극적인 피드백 교류를 통해 유연하고 유지 보수성 높은 코드 작성 - 비용 최적화: 신규 기술 도입 및 기존 시스템 개선
기술 스택
경력
Cowork AI
백엔드 엔지니어
AI 기반 SEO 콘텐츠 생성 서비스 풀스택 개발
Gemini AI Chaning을 이용하여 사내 마케터를 위해 SEO 키워드 분석 - 전략 수립 - 콘텐츠 생성을 자동화하는 웹 기반 도구를 7일 내에 제작
Go Echo Framework를 이용하여 서버 API 구현
React, shadcn, Tanstack Query, Zustand를 이용한 프론트엔드 구현
AI 이력서 생성 및 헤드헌팅 서비스 "커리어핏" 개발
Google Text Embedding 모델을 사용하여
SQLite를 통한 vector 검색 로직 구현 및 Gemini를 이용한 이력서 수정 로직 구현
Go 표준 라이브러리
net/http
, SQLite 기반 서버 구현playwright-go
를 활용하여 104개의 채용 사이트에서 3400여개의 구직 공고를 안정적으로 크롤링함GCP Cloud Run을 활용한 컨테이너 배포 및 Cloud Scheduler를 활용한 배치 프로세스 구축
회사 홈페이지 리뉴얼
Hugo Theme, Imagen 3를 이용하여 회사 홈페이지 컨텐츠 제작
Google Search Console, GA 등록 후 색인 설정
hugo layout 커스텀
다국어를 지원하도록 수정
회사 홈페이지를 번역하기 위해 자작 ChatGPT 기반 번역 CLI를 만들어 도입
(3개월 | 프리랜서)
(유)일루미나리안
백엔드 엔지니어 • 서버개발
Spring Boot를 사용하여 신재생 에너지 크라우드 펀딩 투자 플랫폼 Energy Shares US의 서비스 및 백오피스의 RESTful API 개발 및 유지보수
MySQL을 사용한 데이터 관리 및 JPA, QueryDSL을 통해 비즈니스 로직을 구현
Testcontainers를 이용하여 QueryDSL의 Repository 테스트 도입 및 커버리지 50% -> 70% 개선
@SpringBootTest 어노테이션을 최적화하여 기존대비 테스트 시간을 3분의 1로 경감
Grafana Tempo 도입 및 로그 필드 정의 로그 포맷 단일화를 통해 모니터링 시스템 개선
Locust 부하테스트를 통해 컨테이너 적정 스펙 정의 및 외부 서비스 API를 비동기 처리하여 성능 개선
AWS SQS를 활용하여 이벤트 기반 아키텍처를 도입, 응답 지연으로 인한 사용자 경험을 개선함
(10개월 | 정규직)
(주)룩코
백엔드 엔지니어 • 개발팀
1년 6개월 동안 진행된 반기별 인사 평가에서 연속적으로 ‘Outstanding’, ‘Exceed’, ‘Outstanding’ 등급 획득
회원수 100만, MAU 40만의 트래픽을 받아내는 의류 관리 플랫폼 에이클로젯 서비스에 Go Echo Framework를 사용하여 RESTful API를 구현 및 유지보수
PostgreSQL을 통해 중고 이커머스 기초 테이블 설계 및 관련 비즈니스 로직 구현
중고 빈티지 의류 이커머스 사업자의 작업 효율을 높이기 위한 B2B 서비스 Looko AI의 백엔드 구축
Go Echo Framework를 이용한 RESTful API 구현 개발 및 클린 아키텍처 도입으로 각 계층 간 재사용성을 증가시킴
초기 프로젝트였기에 RDB에 비해 스키마 변경에 용이한 MongoDB를 통해 메인 DB를 사용하여 DB를 구성
3개의 멀티소스 (에이클로젯, 카페 24, 네이버 스마트 스토어)의 주문/상품/클레임에 대한 서비스 상태를 FSM을 통해 서비스와 동기화 하고 30만건의 상품, 5만건의 주문 상태를 실시간으로 동기화 처리 경험
AWS Lambda, EventBridge를 통해 각 플랫폼의 토큰을 정기적으로 Refresh하는 서버리스 함수 구축 경험
라벨링 백오피스
의류 AI 정확도를 높이기 위한 Go 기반 사내 라벨링 백오피스 개발
클린 아키텍처 도입으로 기존 쿼리 기반 라벨링 백오피스 대비 Worst case 기준 1/9 수준으로 응답 속도를 개선함
(1년 9개월 | 정규직)
주식회사투디지트(2DIGITInc.)
백엔드 엔지니어 • 개발팀
Python Django 기반 백오피스 서버 RESTful API 개발 및 유지보수 담당
기존 SQL Alchemy 기반 SQL Raw Query 부분을 Django ORM 으로 리펙토링
Javascript 모듈 Trading View를 이용하여 주가 차트 UI 개발
(4개월 | 정규직)
프로젝트
(유)일루미나리안
모니터링 시스템 개선
기존 로그에는 특정 트랜잭션에 포함되어 있는 로그를 검색할 수 있는 기준이 없어, Client에서 헤더를 통해 주입받은 Request ID를 내부 로깅에 추가하고, Micrometer를 활용하여 Trace ID, Span ID를 내부 로깅에 추가하여 버그 추적을 용이하게 변경함
해당 ID를 이용하여 Grafana Alert, Rule에 등록함으로써 버그 발생 시 Slack에 메시지가 출력되도록 기능 추가
서버 로그 포맷을 JSON으로 변경함으로써 Log Insight, Grafana에서의 필드 검색을 용이하게 변경
기존에는 로그만 모니터링하고 있었기 때문에 함수별 실행 시간 등을 모니터링 하기 어려웠음. Grafana Tempo 도입을 통해 트랜잭션의 각 구성요소의 소요 시간, 내부 이벤트 로그 등을 볼 수 있게 개선 됨 추가로 응답시간이 느린 API를 추적하기 위해 Grafana Alert, Rule에 추가하여 Slack에 메시지가 출력되도록 기능 추가함
(유)일루미나리안
Jenkins -> Github Actions 마이그레이션
DevOps 인력 문제를 개선하기 위해 기존 Jenkins 스크립트를 Github Actions로 이관하고, YAML Difference Reporter를 이용해 배포 시 발생하는 휴먼 에러를 최소화하였습니다.
기존에 Jenkins의 경우 devops 개발자가 관리하고 있었음. 단순한 CI의 경우 Github Actions를 통해 각 파트 개발자가 구성하고 있었으나, devops 개발자가 다수 퇴사함으로 인해 관리에 인력 부족이 발생함
Github Enterprise 요금제를 사용하고 있으나 기본 러너를 거의 사용하지 않아 한달 무료 50000분에 훨씬 못 미치는 수준으로 사용하고 있었음
기존 개발자들이 Jenkins 보다 Github Actions에 더 익숙하고 러닝 커브가 더 낮기 때문에 Github Actions -> Docker Build -> ECR -> EventBridge -> ECS 로 이어지는 배포 플로우를 마이그레이션함
Pull request open 시 수행되는 테스트 커버리지 측정, SonarQube를 수행하는 액션을 Github Actions로 마이그레이션함
Github Environment를 이용하여 환경별로 달라지는 변수, 시크릿을 좀 더 용이하게 관리하도록 함
(유)일루미나리안
테스트 개선 및 최적화
Self-hosted runner 도입, @SpringBootTest
어노테이션 최적화를 통해 PR에서의 테스트 시간을 5분의 1로 경감
천재 지변 등으로 인한 Failover처리에 유의하여 Self-hosted runner를 도입하므로써 테스트 시간을 경감.
Testcontainers 도입을 통해 Repository 유닛 테스트를 추가하고 기존 테스트 커버리지를 50%에서 70% 수준으로 개선
(주)룩코
Looko AI 서버 개발
중고 의류 판매 사장님의 업무를 자동화하는 서비스 Looko AI를 통해 룩코의 첫 매출을 견인하는데 일조함.
데이터 스키마가 외부 서비스에 많은 의존을 하고 있어 스키마 변경이 유리한 MongoDB를 채택하여 메인 DB로 사용
각 플랫폼 별 API의 쿼터에 맞게 물동량을 조절하여야 했기 때문에 순서에 맞게 요청하기 위해 RabbitMQ를 사용하여 비동기 방식의 이벤트 기반 아키텍처로 서비스를 구현
플랫폼 별 상품, 주문, 클레임을 Looko AI가 정의한 데이터에 맞게 동기화하기 위해 FSM을 사용하여 30만건의 상품, 5만건의 주문을 실시간 동기화 처리함
유지보수를 편리하게 하기 위해 각 이벤트 단위로 동기화 할 수 있는 FSM을 사용하여 조건문을 크게 감소시킴
상태 별 다이어그램을 지원하기 때문에 실제 코드와 일치하는 상태 다이어그램 API를 만들어 공유함
Mockery를 사용하여 각 레이어별 유닛 테스트 코드를 작성함. 전체 테스트 커버리지를 70% 이상으로 유지
(주)룩코
Looko AI DevOnly CLI 개발
Go 특성상 발생하는 보일러 플레이트 및 중복 상수 정의를 회피하기 위해 코드 자동 생성 CLI를 제작 및 도입함
사내에서 사용하는 응답 및 필드 도메인의 코드가 yaml 기반으로 작성, 파싱하여 사용되고 있었음
yaml, Go 코드에 중복 정의를 해야하기 때문에 개발자가 누락하여 배포되어 문제가 종종 발생함.
이를 자동화 하기 위해 urfave/cli 라이브러리를 통해 3가지 Task를 정의, 구현함
metagen: 사내에서 사용하는 메타데이터 API의 응답을 yaml을 기반으로 Go 코드를 생성하는 Task
enumgen: 각 타입의 enum을 대체하기 위해 yaml기반으로 Go 코드를 자동생성하는 Task
errorgen: 에러 Response 내 코드, 다국어 설명을 Go 코드로 자동 생성하는 Task
(주)룩코
에이클로젯 서버 개발
회원수 100만, MAU 30만을 받아내는 API서버를 Go 기반으로 구현, 유지보수 하였음
Go, Echo Framework를 이용하여 RESTful API를 구현함
Github Discussions에 각 레이어별 지켜야 할 컨벤션 목록을 정의, 문서화함
기존 SSH 접속을 통해 배포하는 방식을 Github Actions로 이관함으로써 배포 자동화 프로세스 구축
PostgreSQL을 통해 데이터를 관리하고, 테이블 설계함.
쿼리 개선 및 인덱싱을 통한 성능 튜닝을 경험함
excalidraw를 통해 중고 상품의 상태 정의 및 다이어그램으로 알기 쉽게 문서화하였음.
초기 중고 판매 상품 데이터 스키마 정의 및 관련 API 구현
Open Source
Open Source 기여
hugo-ai-translator
회사 홈페이지, 개인 블로그를 다국어로 번역하기 위해 제작
ChatGPT를 이용하여 Hugo 의 디렉토리 구조에 맞게 번역을 수행하는 CLI 구현
yaml-diff-reporter
환경 별 달라지는 yaml 기반 시크릿을 검사하기 위해 제작함
기존 yaml 체크 도구의 경우 값 검사까지 진행하기에, 필요에 따라 타입, 키, 인덱스를 선택하여 검사하기 위해 제작
self-hosted-runner-online-checker
Self-hosted runner, Github에서 제공하는 기본 runner를 상황에 맞게 분기처리하기 위해 제작, 해당 라이브러리의 결과를 이용하여 Self-hosted runner가 offline인 경우 Github runner를 사용하도록 Failover 처리할 수 있음
action-api-checker
액션 진행 도중 특정 API가 원하는 응답 코드, Body등을 반환할 때까지 대기하는 액션을 구현함
이벤트 기반 아키텍처에서 rabbitmq의 Graceful Shutdown을 위해 구현된 액션으로, 메시지 Consume 도중 배포가 진행되는 경우 이전 데이터로 개발자가 수동으로 처리해줘야 하는 번거로움을 피하기 위해 제작함
Queue가 모두 비었는지 확인하는 API를 구현하여, 해당 API가 200(OK)를 반환할 때 배포가 진행되도록 지정함
gombok
Go 언어 특성 상 어쩔 수 없이 생성되는 보일러 플레이트 코드를 줄이기 위해 구현
Lombok에서 영감을 얻어 생성자, 빌더, Getter, Setter 등을 주석을 통해 파싱하여 보일러 플레이트 코드를 자동 생성하는 CLI를 구현
aws-secret-gen
AWS Secret Manager로 시크릿을 저장할 때 목록에서 가져올 Secret을 선택하여 지정된 파일로 생성하는 도구
로컬에서의 개발, 디버깅을 위해 메신저를 통해 시크릿을 공유하는 상황을 피하기 위해 제작함
포트폴리오
교육
인하대학교
대학교(학사) | 경영학과, 컴퓨터공학과(복수전공)
2016.03. ~ 2022.08.
졸업