채용공고 올리기

심규도님을 응원해보세요!

이직/구직 중이에요
성실함
책임감
학습 지향
커뮤니케이션
긍정적

미리보기

직업
백엔드 개발자
이름
심규도
간단소개
저는 항상 제가 담당하는 서비스의 사용자를 위해 노력하는 백엔드 개발자입니다! 테스트 코드를 기반으로 안전한 서비스를 개발하기 위해서 노력하고 고객들에게 만족스러운 경험을 제공하기 위해서 성능적인 면과 ux 측면도 고민하며 개발합니다

교육

소속/기관
한성대학교
종류 | 전공명/전공계열
대학교(학사) | 컴퓨터공학부
재학 기간 (재학 상태)
2016.03. - 2021.12. (졸업)

경력

회사명
코나아이
직책 • 부서
사원 • 서버개발팀
근무 기간 (근무 형태)
2022.01. - 재직 중
(3년 2개월 | 정규직)
담당 업무
  • MSA 형식의 지역화폐 서비스 내의 배달, 카드원장 등 같은 다양한 컴포넌트의 부 담당자로 백엔드 서비스 개발

  • 담당하고 있는 서비스의 개발 요건 검토, 기능 개선 및 추가, 성능 개선

  • 신규 서비스(광고 플랫폼, 챗봇 시나리오 서버)의 설계 및 개발

  • 다양한 유틸성 라이브러리 개발

  • 개발계 리눅스 환경 관리 및 유틸성 쉘 스크립트 개발 및 수정

  • 결제 플랫폼 관련 다양한 도메인의 데이터 추출을 위해 쿼리 생성 및 수정

회사명
코나아이
직책 • 부서
인턴 • 서버개발팀
근무 기간 (근무 형태)
2021.07. - 2021.12.
(6개월 | 인턴)
담당 업무
  • 실무자와 백엔드 개발자 스터디 진행 - https://kyudo97.gitbook.io/library/web_study
  • 배달대행사 <> 코나아이 사이의 api 전문 검증용 웹 페이지 / 백엔드 서버 개발
  • 배달 서비스의 시간 할증 팁 기능 신규 개발
  • 배달대행사 바로고와의 배달 관련 전문 연동 및 배달 서비스에 적용

자격증

자격증명
정보처리기사
점수/급 | 발급 기관
기사 | 한국산업인력공단
취득월
2021.06

프로젝트

프로젝트명
지역화폐(경기, 인천)에서 제공되는 챗봇 서비스 - 설계 및 프로젝트 구성, 시나리오 개발
소속/기관명
코나아이
프로젝트 기간
2024.02. - 진행 중
(1년 1개월)
프로젝트 설명

AI 팀에서 제공하는 챗봇 전용 AI 서버와 전문을 연동하여 사용자의 자연어 질문의 분석 결과를 정해진 시나리오에 맞게 진행될 수 있도록 시나리오 진행 관리, 대화 세션 관리, 시나리오 내 로직 구현, 채팅 이력관리 기능을 설계 및 개발했으며 AI 서버로 전달하는 전문을 제한하기 위해 Bucket4j 을 사용해 서버 요청의 인입량을 조절했습니다.

  • 개발 요건

    • 챗봇 시나리오가 진행되기 위한 세션 관리 기능 추가

      • 채팅의 세션을 관리하기 위한 세션 시작, 세션 종료, 세션 상태 조회 api 개발

      • 세션의 메타데이터를 정의, 해당 메타데이터를 기반으로 세션 유지 로직 수행

      • RabbitMQ 의 delayed message exchange 을 사용해 세션이 유지되고 종료될 수 있도록 설계

    • 챗봇 시나리오 관리를 위한 서비스 설계 및 기능 추가

      • 자연어를 받아, AI 서버의 판단을 기준으로 특정 시나리오를 기반한 대화의 시작, 대화의 진행되도록 프로젝트 구성 및 설계

      • 대화 내 모든 진행 사항을 Bean 으로 등록 후 getBean 을 통해 각 시나리오 내 진행 사항이 수행되도록 설계

      • 대화의 진행을 대화 시작, 진행 단계로 나누어 유저의 액션에 맞게 구현될 수 있도록 api 개발

      • 기획팀과 대화의 상태를 정의, 로직내에 상태 값 처리 로직 추가

    • 챗봇 시나리오 구현

      • 카드 유효기간 관련 시나리오, 카드 배송 및 카드 신청 관련 시나리오 구현

      • 시나리오 구현을 위해 MSA 내의 다양한 도메인 분석 및 외부 호출 로직 라이브러리로 분리

    • 챗봇 이력 관리

      • 운영팀, CRM에서 모니터링 시, 필요한 데이터 논의 및 설계 후 데이터 구성 및 기능 개발

      • 챗봇 진행 시, 대화의 진행에 따라 Spring Event 의 TransactionalEventListener 를 통해 대화 원장의 커밋에 맞춰서 이력 저장하도록 구현 및 다양한 요구사항에 맞는 대화 이력 + 대화 원장 조회 api 추가

      • ui 노출 시 수행된 문구를 개인정보를 제외하고 노출하도록 문구를 변환하는 로직 추가

    • 챗봇 통계

      • 일자별 챗봇 통계를 위해 QueryDsl 을 통해 다수의 테이블에 조회하는 통계 조회 전용 api 추가

    • AI 학습 정책 관리

      • 코나아이 내부의 정책들을 AI 에게 학습시키기 위해 정책 파일(Excel)을 관리하기 위한 관리용 데이터 설계 및 백오피스에서 사용할 CRUD api 개발

    • Bucket4j 을 사용한 AI 서버 인입량 조절

      • 현재 결제 플랫폼 서버에 접속하는 게이트웨이에서 사용 중인 Bucket4j 라이브러리를 도입해 특정 수치 이상의 요청은 Http 429 로 처리

      • 유료 AI 서버에 부하가 걸리지 않고 챗봇 서버의 부하를 예방하기 위해 QA팀과 성능 테스트 수행(TPS 10 기준)

      • hikari pool 의 조절과 Bucket 의 TotalSize, RefillSize 의 조절을 통해 초당 최대 처리 50 / 최소 처리 5 설정

    • 운영팀 지원

      • 데일리로 사내 메일을 통해서 전날 챗봇의 통계를 요구사항에 맞게 html 로 그려서 편리한 모니터링 제공

      • 상세한 챗봇 현황 및 이력의 모니터링을 위해 hue 에서 조회할 수 있는 쿼리 작성

프로젝트명
광고 플랫폼 - 설계 및 프로젝트 구성, 정책 관리 서비스 개발, 집계 서비스 개발
소속/기관명
코나아이
프로젝트 기간
2023.09. - 진행 중
(1년 6개월)
프로젝트 설명

코나아이에서 서비스 중인 코나앱, 16개의 지역화폐 앱에서 노출되는 모든 광고를 정책으로 관리하는 서버, 앱에서 발생하는 광고의 노출 / 클릭 등의 이벤트를 집계하는 집계 서버의 도메인 설계, 및 개발을 진행했습니다.(현재 인천, 경기 앱에서 사용 중)

  • 개발 요건

    • 정책 서버

      • 광고 플랫폼에서 필요한 모든 데이터(광고주, 소재, 소재이력, 구좌)를 관리하는 서버로, 기획에 맞춰 데이터 설계 및 envers 를 통한 이력 관리 기능 추가

      • 백오피스에서 사용할 광고 관련 모든 데이터의 생성 및 수정, 삭제 그리고 화면의 요구사항에 맞는 조회 API 개발

      • 소재의 노출 상태 관리 배치 개발, 롤링형 구좌에서의 소재 노출 시, 강조 설정 기능 개발

    • 조회 서버

      • 앱, 웹에서 광고를 노출하고 광고의 노출 / 클릭 등 유저의 이벤트를 전달 받는 서버

      • 정책 서버에서 조회된 내용과 타 컴포넌트의 추가적인 조회 사항들(회원 정보 등)은 Redis 를 기반으로 캐싱 처리

      • 정책 서버에서 캐싱된 데이터가 변경될 시, 조회 서버로 Rabbit 호출, CacheEvict 를 수행

      • 앱에서 사용자의 노출, 클릭 등 광고 관련 유저의 이벤트 전달은 메세지 큐를 통해서 집계 서버로 전달, 전달 실패 건을 처리하기 위해 dead letter queue 구현

    • 집계 서버

      • 광고 관련 유저의 이벤트를 기반으로 집계 데이터 적재 및 관리

      • 기획에 맞춰, 통계에 필요한 요소들을 기반으로 집계 데이터 구성 및 데이터 저장소를 이분화하여 저장하는 로직 추가

        • JPA 특성을 고려해 저장 시 데이터를 조회하는 시간을 줄이고자 persist 를 통해 직접 insert 문 수행

        • SpringEventListener 를 기반으로 트랜잭션 성공에 맞춰서 엘라스틱서치에 저장

        • Retry 를 통해 실패건 처리

      • 대량 데이터 조회를 위해 non-offset 방식의 조회 방식 변경으로 기존에 offset 방식에서 조회 방식 수정

      • 빅데이터 활용을 위한 디비에 적재된 집계 데이터를 CSV 형식 파일화 기능 개발

        • 기존에 XSFFWorkbook 라이브러리를 nio 으로 변환하여 100만 건의 데이터 엑셀화 시간을 10초 대에서 4초로 감소

        • 서비스에 CQRS 패턴을 적용, Elasticsearch 저장소 추가로 100만 건의 데이터 엑셀화 시간을 70분에서 6분대로 감소

    • 서버 공통

      • 코드 공통화 및 테스트 코드 구조화

        • 각각이 모듈의 공통된 로직, 클래스 등을 하나의 공통된 모듈로 분리해 중복된 코드 개발 감소

        • 공통 모듈과 광고 관련 모듈들이 함께 형상관리 될 수 있도록 git 명령어를 수행하는 스크립트 생성

        • Base 테스트 코드의 생성을 통해 테스트 코드별 중복된 setup, cleanup 을 공통화, 빈번하게 사용되는 코드를 메소드화 시켜 테스트 코드 생성의 생산성에 기여

  • 스터디 세미나

    • Elasticsearch 기술 스택 도입을 위해 스터디 및 세미나를 진행

프로젝트명
지역화폐 배달 서비스 - 요구사항 개발 및 유지보수
소속/기관명
코나아이
프로젝트 기간
2021.07. - 진행 중
(3년 8개월)
프로젝트 설명
  • 서비스 개선

    • 서비스 지연 경험

      • 2022 월드컵 당시 다수의 가맹점들이 포스기 기동으로 인해 2배의 트래픽 인입

      • Redisson lock 처리 부분에서 다수의 스레드의 접근으로 인한 지연 해소를 위해 사장님앱 및 포스기 전용 서버 분리

    • 배달대행사 관리

      • 객체 지향 방식에 맞춰 현재 배달서비스와 연동한 20개 가량의 외부 배달대행사를 각각의 서비스를 구분

      • 배달대행사-Bean 형식으로 Map 형태로 @PostConstruct 방식으로 서버에 맞춰서 등록할 수 있도록 설계

      • 주문이 배달대행사별로 route 되어 수행될 수 있도록 로직 리팩토링 및 개발

    • 테스트 코드 모듈화

      • 지속적인 테스트 코드의 누적, 다양한 프레임워크(Junit4, Spock)의 사용으로 전체 테스트 코드의 수행시간이 30분 정도 기록

      • 신규 테스트모듈은 기존 모듈과는 분리하여 코틀린 기반의 JUnit5 를 사용하여 수행될 수 있도록 개발해 테스트 시간을 감축

    • API 문서화 및 개발 단축

      • Openapi-Generator를 활용한 API 문서 기반의 개발 프로세스 도입

      • Swagger.yaml을 작성하고 문서를 기반으로 controller, dto를 자동 생성하는 라이브러리 도입

      • 해당 내용을 애노테이션화 후, 사내 라이브러리에 추가해 다른 서비스에도 해당 프로세스 도입

  • 개발 요건

    • 외부 배달 대행사 연동

      • 이어드림, 플레이, 냠냠박스, 온나플러스, 배달히어로, 말만해 배달대행사 연동

      • 각 배달 대행사와 협의하여 일정 조율, 개발 요청 수행, 질의응답 수행

    • 배달 가맹점 찜 목록과 찜 폴더

      • 사용자별 찜 폴더, 찜 목록의 도메인 설계, 관련 API 개발

      • 배달 서비스에 등록된 모든 사용자의 초기 설정 마이그레이션 진행

    • 외부 주문 연동사 연동

      • 코나 주문 프로세스와 푸드테크의 시나리오 비교, API 분석

      • 주문 관련 API 개발, 배달 상태 관련 API 개발

      • 푸드테크 가맹점은 별도 관리되도록 개발 및 푸드테크 가맹점 전용 API 개발

    • 컵 보증금 제도 적용

      • 배달 결제 시, ISO 8583 규격에 컵 보증금 항목 추가를 위한 개발 및 테스트 진행

      • 사내에서 사용하는 ISO 8583 생성 라이브러리 리펙토링 및 배달 결제 로직 리펙토링

프로젝트명
카드 원장 관리 서비스 - 요구사항 개발 및 유지보수
소속/기관명
코나아이
프로젝트 기간
2022.03. - 진행 중
(3년)
프로젝트 설명

코나아이에서 자체적으로 만드는 카드, 외부사 연계 카드 등 코나아이를 거쳐가는 모든 카드의 원장과 그 부가 속성(결합정보, 기명화, 소득공제, 법인기명화, 유효기간, 해외결제, 커스텀카드정보) 를 관리하는 서비스의 부 개발자로 유지보수 및 요구사항에 맞는 개발을 진행하고 있습니다.

  • 성능 개선

    • 카드 원장 디비 캐싱화

      • 카드 정보 조회 시, 대략 5000만건의 카드 원장 테이블과 카드의 부가 속성이 테이블을 한꺼번 조회해 속도 지연

      • 카드 원장의 자주 사용되는 속성 + 부가 속성으로 구성된 캐싱테이블을 CQRS 형식으로 기능 설계 및 개발

      • 코드 내 흩어져 있는 속성들을 인터페이스화를 통해 캐싱 필요 시 구현을 강제화시켜 누락이 없도록 개발

  • 개발 요건

    • 카드 유효기간 만료 정책 관련 개발

      • 유효기간 만료 정책을 카드 원장의 속성에서 하나의 테이블로 분리하여 관리되도록 하위 호환성을 고려하며 개발

      • 유효기간 만료에 따른 푸쉬 알람 전송 개발을 진행

    • 카드 발급 데이터에 EMV 규격 추가

      • EMV 규격 중 5F20 에 해당하는 태그를 카드별 발급 데이터에 추가하는 개발을 하위 호환성을 고려하며 개발 / 테스트 진행

    • 결합 카드 정책 관련 개발

      • 지역화폐 카드에 코나카드를 결합해서 지역화폐에서 결제가 불가능한 곳에서는 코나카드를 통해 결제하는 서비스 구현을 위한 도메인 설계

      • 카드간 결합, 결합해지, 주 카드 설정, 요구사항에 맞는 조회 API 을 개발했으며 기존 카드 관련 API 의 하위호환성을 고려해서 개발을 진행

  • 부개발자 역할 수행

    • 방글라데시 지사의 로컬 개발자들과 소통 수행

    • 기명화, 소득공제의 플로우를 ERD 로 작성 및 문서화 작업을 진행

프로젝트명
보조금24 서비스 - 조회 서비스 개발
소속/기관명
코나아이
프로젝트 기간
2022.07. - 2022.10.
(4개월)
프로젝트 설명

정부에서 제공하는 보조금 지급을 지역화폐로 지급해주는 서비스 중에 보조금의 신청, 보조금의 지급 2가지의 단계의 이벤트를 각각 기록해, 조회하는 파트를 담당해서 개발했습니다.

  • 개발 요건

    • 보조금의 신청, 지급 이력 조회파트 개발
      • 어댑터 패턴 방식으로 신청, 지급 원장 저장 시 애노테이션을 통해서 간단하게 이력도 저장될 수 있도록 설계
      • 신청, 지급 데이터 저장 시 애노테이션을 기준으로 AOP 설정을 통해 각각의 원장에서 개발 없이 이력을 수집할 수 있도록 개발
  • 이력 조회 담당자 역할

    • 기획부서, 사업부서의 요구사항에 맞게 각 원장 코어에 개발요청하거나 이력에 속성을 추가하며 개발
프로젝트명
실시간 리워드 서비스 - 요구사항 개발 및 유지보수
소속/기관명
코나아이
프로젝트 기간
2022.07. - 진행 중
(2년 8개월)
프로젝트 설명

결제, 카드신청, 회원가입등 지정된 이벤트를 다수의 타 서비스에서 메세지큐를 통해 메세지를 전달받아, 해당 리워드의 조건 체크 후 리워드 지급 요청 및 리워드 관련 도메인을 관리하는 서비스의 부 개발자로 유지보수 및 요구사항에 맞는 개발 진행하고 있습니다.

  • 서비스 개선

    • 동시성 이슈 경험

      • 특정 서비스에서 메세지큐 전달로 인해 deadlock 발생

      • 운영에서의 상황을 재현해서 쿼리를 확인해보니, 두 개의 트랜잭션에서 하나의 데이터를 업데이트하는 쿼리를 짧은 시간 사이에 동시에 커밋한 상황으로 인해 해당 데이터에 deadlock 이 걸려있었고 그 사이에 또 다른 트랜잭션에서 deadlock 이 걸린 데이터에 추가적인 업데이트 쿼리 전송으로 인해 deadlock 을 관제(Splunk 을 통해 확인)

      • 동시에 들어온 수십개의 업데이트 쿼리가 수행되는 2개의 긴 트랜잭션 내에서 같은 트랜잭션을 바라보고 서로의 커밋을 기다리는 것이 이슈였기 때문에 중복된 데이터를 바라보는 쿼리는 트랜잭션을 REQUIRES_NEW 로 분리 후, 조회 시점부터 lock 을 걸어 교착상태가 발생하지 않도록 처리

  • 개발 요건

    • 신규 이벤트 추가

      • 럭키로코 같은 리워드를 지급해야하는 신규 이벤트 개념 추가 시, 해당 이벤트에 맞는 리워드 정책 및 조건, 리워드 지급 및 취소 파트 개발

  • 부개발자 역할 수행

    • 방글라데시 연구소에 프로젝트 이관

      • Oracle DB 에서 Maria DB로 디비 이관 작업 및 쿼리 수정

      • 서비스의 전체 프로세스 문서 작성 및 ERD 작성

기술 스택

기술 스택
Spring Boot
Java
Kotlin
Oracle
Shell Script
Redis
Linux
querydsl
Elasticsearch
JPA
junit5
Git
SQL

포트폴리오

타입
URL
깃허브
link
https://github.com/mameil
URL 링크
link
https://kyudo97.gitbook.io/library/
댓글