채용공고 올리기

원주연님을 응원해보세요!

지금 만족하고 있어요
책임감
협업 지향
학습 지향
커뮤니케이션
긍정적

미리보기

기본 정보

이름
원주연
직업
백엔드 개발자
간단 소개

Java/Spring, NetsJS를 사용하는 백엔드 개발자 원주연입니다. 문제해결을 위해 고민하고 사람들과 기술적인 커뮤니케이션을 나누는데 흥미가 있습니다. 정기적인 스터디모임을 통해 지식을 공유하고 의견을 공유하는 것을 좋아합니다. 가독성과 유지보수성이 좋은 클린 코드를 지향합니다.

기술 스택

기술 스택

DBMS/RDBMS, TypeScript, Spring Boot, NestJS, AWS, Redis, Kafka

경력

회사명

아우토크립트 주식회사

직급 | 부서 | 근무 유형

팀원 | V2G개발그룹

근무 기간

2022.10. ~ 2024.06. (1년 9개월)

담당 업무


[Auth 서버 이중화를 통한 고가용성 보장]

  • 로드밸런싱을 통해 Auto Failover를 설정하여 active서버에 장애가 발생했을시 passive서버를 통해 무중단 서비스

    • 서버가 장애가 생겼을 시 CloudWatch Alarm을 통해 알람 메일 설정

    • Auto Scaling 을 통해 EC2 인스턴스 자동 생성

  • JWT를 활용한 토큰 발급



[애플리케이션 충전 서비스 리팩토링]

  • 충전기 메세지 충전기의 메세지별 대응로직 추가

    • 충전기 메세지 핸들러 추상화를 통해 각 메세지에 맞는 구현체를 상속받아 구현

    • 전략 패턴을 사용하여 메세지 타입에 맞는 메세지 핸들러 구현체가 호출되도록 구현

  • NFC 충전카드 태깅 및 충전기능 리팩토링

    • 충전기에 대한 의존성 제거

      • 충전기 결함, 정전 등 제어 불가능한 케이스에 대해 어플리케이션 장애 발생

      • 충전기에서 메세지를 보내지 않은 경우 Scheduler를 통해 강제종료 처리

        • Firebase를 이용하여 강제종료 후 유저에게 푸시알림 Event로 전송 처리

  • 충전기 동시성 이슈 해결

    • 기존 충전기에 대한 Lock이 걸려있지 않은 상황

    • 한 유저가 충전기를 이용해 충전 시도 시 다른 유저가 같은 충전기에 대해 원격으로 충전을 거는 이슈 발생

      • 해당 동시성 이슈가 간혹적으로 발생하는 근거를 들어 낙관적 락 적용

  • 비정상적 충전기 선점 문제 해결

    • 사용자가 충전소를 가기 전 미리 어플리케이션으로 충전기를 인식하여 선점하는 문제 발생

      • 결제 후 5분내 충전을 시도하지 않으면 충전취소 및 환불로직 수행

  • 기존 40% 이슈율을 1%이하로 개선




[공지사항 이미지 저장방식 개선]

  • 기존 공지글과 이미지를 한번에 올리는 API 구조

    • 이미지 업로드, 공지글 작성 API 분리를 통한 성능 개선

    • 사용자가 이미지 첨부 시 바로 이미지 업로드 API를 요청하도록 개선하여 응답글 작성시 응답속도 개선

  • DB에 Base64URL을 그대로 저장하는 구조

    • AWS S3 Bucket 을 통하여 저장하도록 로직 개선

    • 공지사항 내용 DB 용량 40% 이상 감소

  • 공지사항 작성, 공지사항 조회 응답시간 50% 이상 개선


[캐시 및 스케줄러를 활용한 DB 부하 감소 및 성능 최적화]

  • 충전단가 조회 캐시 적용

    • 크게 변동이 없는 충전단가 조회에 대해 Spring Local Cache 적용

    • 충전단가의 부하가 바뀌는 시간마다 @CacheEvict를 적용하여 캐시를 제거하고 갱신된 데이터를 반영

  • 충전소 조회 시 충전소마다 조회횟수 통계로직 변경

    • 기존 사용자가 충전소를 조회할 때마다 DB에 대해 업데이트 수행

      • Map을 통해 충전소별 조회횟수를 저장

      • Scheduler를 통해 10분에 한번씩 조회횟수를 한번에 업데이트

프로젝트

프로젝트명

토이 프로젝트: 콘서트 예매 시스템

소속/기관명

개인

프로젝트 기간

2024.06. ~ 2024.08.

프로젝트 내용

프로젝트 진행하게 된 계기

  • Redis, Kafka 등 대규모 트래픽 처리에 대한 경험에 대한 갈증

  • Lock을 통한 동시성 문제 제어

  • TDD, Clean Architecture를 통한 설계와 구현능력 상승 기대

  • Event를 통한 외부 API 의존성 제거


개발 내용

  • Clean Architecture + Layered Architecture 방식으로 설계

    • 비즈니스 로직 보호와 도메인 중심의 설계

    • API 계층이 비즈니스 로직을 의존하도록 설계

    • Facade 계층을 도입하여 서비스 간 상호참조 방지

  • Redis를 통한 대기열 방식 구현

    • 토큰 조회를 DB에서 Redis로 이전시킴으로써 DB에 대한 부하를 줄여 DB 성능 및 안정성 향상

    • Redis의 인메모리 특성으로 유저 토큰 조회 응답속도를 빠르게 개선

    • Redis의 클러스터링 기능을 활용하여 유저 토큰 관리 기능의 확장성을 보장

  • 결제 기능 Kafka로 구현

    • 예약 완료시 유저의 잔액 차감 Kafka 이벤트로 처리

    • 예약 기능과 결제 기능의 의존 분리

  • DB Lock을 활용한 동시성 이슈 제어

    • 유저 포인트 충전/조회에 대해 낙관적 락 적용

      • 비정상적 충전/조회 API 요청이 동시에 들어올 경우를 대비하여 방어로직

    • 콘서트 좌석에 대해 비관적 락 적용

      • 충돌이 잦은 콘서트 좌석에 대해 낙관적 락 대신 비관적 락 적용

교육

소속/기관명

한국공학대학교

종류 | 전공

대학교(학사) | 게임공학부 게임공학과

재학 기간 | 재학 상태

2013.03. ~ 2022.02. | 졸업

소속/기관명

스타르타코딩클럽

종류 | 전공

사설 교육 | 항해99 백엔드 플러스 5기

재학 기간 | 재학 상태

2024.06. ~ 2024.08. | 졸업

자격증

자격증명

정보처리기사

점수 | 발급기관

한국산업인력공단

취득연월

2021.11.

자격증명

SQLD

점수 | 발급기관

한국데이터산업진흥원

취득연월

2024.04.

댓글