채용공고 올리기

이규진님을 응원해보세요!

지금 만족하고 있어요
성실함
책임감
협업 지향
유연함
긍정적

미리보기

기본 정보

이름
이규진
직업
백엔드 엔지니어
간단 소개

교육

소속/기관명

서울대학교

종류 | 전공

대학교(학사) | 컴퓨터공학부

재학 기간 | 재학 상태

2019.03. ~ 현재 | 재학 중

경력

회사명

주식회사 아티투

직급 | 부서 | 근무 유형

백엔드 엔지니어 | 개발팀

근무 기간

2023.12. ~ 2024.08. (9개월)

담당 업무

[서비스 설명]

  • 타투 예약을 쉽게 할 수 있도록 견적, 문의서 및 문진표 등을 '타투이스트'에게 제공하는 SaaS 서비스

  • 일반소비자를 대상으로, '타투이스트'의 작업물을 쉽게 찾아볼 수 있도록 태그 검색 기능을 추가하여 제공하는 Platform 서비스

두 가지 핵심 서비스에 풀스택 엔지니어로서 참여했습니다.

[세부 업무]

  • Portone, LemonSqeezy 결제 모듈 도입 및 통합

    • 수수료 정책을 고려하여 복잡하지만 두 PG 사의 서비스를 동시에 사용하기로 결정했습니다.

    • Portone은 정기결제를 '예약결제'라는 방식으로 지원하고, LemonSqueezy는 다양한 Webhook을 기반으로 서비스를 제공하는 등, 서로 기능에 차이가 많아 통합에 어려움을 겪었습니다.

    • 정기결제 시작, 변경, 결제취소, 무료체험과 같이 공통적인 필수 기능들을 하나의 인터페이스로 정리했습니다.

    • 결제 정보 또한 단일 테이블에 저장하도록 다중 연관성(Polymorphic Association)을 고려한

      설계를 통해 성공적으로 통합했습니다.

  • GitHub Actions의 캐싱기능과 Docker Layer 최적화를 통해 5분 이상 소요되던 CI/CD 속도를 1분으로, 약 80% 개선했습니다.

  • FREE, MEMBERSHIP, PRO의 권한에 따라 다른 결과를 제공하기 위해 전략 패턴(Strategy Pattern)을 도입했습니다.

  • PostgreSQL의 tsvector, tsquery를 이용한 자연어 검색 고도화

    • 도메인 특성 상 Full Text Search보다 태그 중심의 검색이 잦고, 데이터 일관성 유지 비용 또한 작다는 점을 근거로 삼아, 검색엔진을 도입하지 않고 PostgreSQL 단일 기능으로 검색을 고도화했습니다.

  • 인덱스를 통해 슬로우 쿼리를 최적화하고, Redis 쿼리 결과 캐싱과 Read Only DB 도입을 통해 DB 부하를 분산했습니다.

  • 실시간 이름 검색을 도입하고, 과도한 API 호출을 막기 위해 Debounce를 적용해 실제 사용자들이 불편을 느끼지 않으면서 부하는 줄일 수 있도록 했습니다.

  • 상태 관리 라이브러리 Jotaiatomfamily 를 사용해, 자동저장 기능과 동시작성 기능을 구현했습니다.

[사용 기술스택]

  • TypeScript, JavaScript

  • NestJS

  • Next.js, React

  • PostgreSQL

  • AWS EC2, RDS, S3, Lambda

  • GitHub Actions

  • Docker, Docker Compose

  • Redis

[링크]

https://arti.to/

회사명

주식회사아티피셜소사이어티

직급 | 부서 | 근무 유형

백엔드 엔지니어 | 개발팀

근무 기간

2023.10. ~ 2024.04. (7개월)

담당 업무

[서비스 설명]

서울시 교육청을 대상으로 생성형 AI를 활용한 수능 국어/영어 문제를 생성해주는 웹서비스입니다. 문제 생성 API와 Java Spring Boot 백엔드 서버를 통합하고, React 프론트엔드 개발 또한 참여했습니다.

[세부 업무]

1인 백엔드 개발자로서 개발 및 배포환경 설정, DB 설계부터 세부 기능 구현까지 주도적으로 진행하면서, 백엔드 개발의 기초를 익힐 수 있었습니다.

  • GitHub Actions과 Docker Compose로 일관된 배포환경 구현

    • 프로젝트 특성상, 개발 이후 운영 시 다른 서버환경에서 실행될 가능성이 있었고, 이때 서버 환경에 따른 변수를 차단하기 위해 Docker 사용을 결정했습니다.

    • GitHub Actions을 통해 테스트와 배포를 자동화했습니다.

  • Logger를 통해 XSS 시도를 확인하고, Spring Interceptor를 활용하여 이를 차단했습니다.

  • 복잡한 함수 이름이 강요되는 JPA의 한계를 느끼고, 보다 복잡한 쿼리를 위해 QueryDSL을 도입했습니다.

  • <시스템 프로그래밍> 수업을 참고하여 문제, 문서, 폴더로 구성된 간단한 파일시스템을 구현했습니다.

    • Google Drive의 엔드포인트를 참고하여 UUID 방식의 id를 채택했습니다.

  • 문제 생성에 많은 시간이 소요되는 문제를 비동기 방식과 Polling을 통해 해결했습니다.

    • ThreadPoolTaskExecutor를 통해 스레드풀을 관리하고, ComputableFuture 타입 객체를 리턴하도록 했습니다.

    • 임의의 Key 값을 생성한 후 반환된 ComputableFuture을 Key-V

      alue Map에 넣어 관리했습니다. 이를 이용해 프론트엔드와 협업하여 Polling을 구현했습니다.

[사용 기술스택]

  • Java Spring Boot

  • MySQL

  • JPA, QueryDSL

  • GitHub Actions

  • Docker, Docker Compose

  • AWS Bastion, EC2, RDS

[링크]

https://www.genque.ai/home

외국어

외국어명

영어

점수

비즈니스 회화 가능

외국어명

일본어

점수

비즈니스 회화 가능

자격증

자격증명

OPIc

점수 | 발급기관

IM3 | ACTFL

취득연월

2024.09.

기술 스택

기술 스택

NestJS, Node.js, TypeScript, TypeORM, PostgreSQL, MySQL, Spring Boot, Java, Docker, docker-compose, Redis, github-actions, Python, React

포트폴리오

URL

link

블로그

티스토리
link

깃허브

깃허브
댓글