채용공고 올리기

김동연님을 응원해보세요!

이직/구직 중이에요

미리보기

기본 정보

이름
김동연
직업
백엔드 개발자
간단 소개

안녕하세요! 신입 백엔드 개발자 김동연입니다. 항상 새로운 것에 도전하는 것을 선호합니다. 목표에 도달하는 방법은 다양한 시도를 통한 경험이라고 생각합니다.

기술 스택

기술 스택

Java, Spring Boot, AWS, MySQL, grafana, Jenkins, Python

프로젝트

프로젝트명

행록

소속/기관명

우아한테크코스

프로젝트 기간

2023.08. ~ 2023.11.

프로젝트 내용

행록 (2023/07~2023/11)

Summary

여행에서 느꼇던 설렘과 추억을 장소 기반으로 기록할 수 있도록 도와주는 서비스 입니다

여행의 흐름과 경비, 사진 메모 등을 한눈에 확인할 수 있습니다.

원한다면 나의 여행을 링크, 커뮤니티 등을 통해 타인과 공유할 수 있습니다.

Link

SiteLink : https://hanglog.com/

Github : https://github.com/waterricecake/2023-hang-log

Skill

Backend

  • Java, Spring Boot, Spring Data JPA, Rest Assured, Mockito, JUnit5, SLF4J, LOGBack, Jacoco

Auth

  • Oauth2.0, JWT

DB

  • MySQL, H2, Flyway

Infra

  • Nginx, Docker, AWS EC2, AWS S3, AWS cloudfront, Grafana, K6

CI/CD

  • Jenkins, Github Action

Role

기능 구현

  • 소셜 로그인
  • 사용자 단일 여행 경비 조회
  • 공공 환율 api 조회 및 저장
  • 공유 상태 수정
  • 커뮤니티 전체 여행 조회 기능 구현
  • 커뮤니티 단일 여행 조회
  • 커뮤니티 단일 여행 경비 조회

패키지간 의존성 분리

  • 엔티티간 의존성이 높아 분리할 필요성을 느낌
  • 타 패키지의 엔티티간의 참조가 있을 경우 id를 참조하게 하여 간접 참조로 분리
  • 로직적으로 분리가 불가능할 경우 event처리를 하여 분리

TPS(Transaction Per Second) 성능 개선

  • JPA N+1 문제
    • 단일 여행 조회 쿼리를 Fetch Join으로 수정하여 요청당 6회에서 3의로 개선
  • Static한 고정값 조회
    • 경비 조회의 특정 고정값들을 메모리에 Static하게 관리하여 요청당 6회에서 4회로 개선

서버 모니터링 구축

  • Grafana, Prometheus 통한 EC2 서버 모니터링 구축
  • Spring의 메트릭은 Spring Actuator를 통해 수집하고 Prometheus를 통해 Grafana로 시각화
  • 로그 메트릭은 error, info, warn의 로그들을 SLF4J과 LogBack을 통해 관리하고 Promtail을 통해 Loki로 소송신하여 Grafana로 시각화
  • 각 서버의 하드웨어 상태 메트릭을 Node Exporter를 통해 수집하고 Prometheus를 통해 Grafana로 시각화

서버 분리 및 로드 밸런싱

  • 각 EC2의 서버 용량이 불필요하게 큼
  • 단일 운영서버로 인해 단일 장애점이 발생시 대체가 불가능하다는 점을 인식
  • 무중단 배포를 위해 운영서버를 확보하기로 함
  • 단일 장애점(SPOF)를 피하기 위하여 Nginx를 통해 운영서버를 스케일 아웃
  • 기존 prod, dev의 t2.small 서버 → micro 서버 pord1, prod2, dev, LB 서버로 스케일 아웃

포트폴리오

URL

link

행록 - 위치기반여행기록서비스

URL 링크
link

깃허브

깃허브
link

포트폴리오

URL 링크

교육

소속/기관명

우아한테크코스

종류 | 전공

사설 교육 | 백엔드과정

재학 기간 | 재학 상태

2023.02. ~ 2023.11. | 졸업

소속/기관명

인하대학교

종류 | 전공

대학교(학사) | 기계공학과

재학 기간 | 재학 상태

2014.03. ~ 2021.02. | 졸업

자기소개

자기소개
  1. 관심있는 개발 분야

    “Java, Spring 기반의 백엔드 서버 구축”

    웹 서비스의 백엔드 서버 개발에 관심이 있습니다. Java를 주 언어로 사용하며 Spring boot 프레임 워크를 통해 백엔드 서버 분야에 대해 공부를 하고 있습니다. 전공 관련 취업을 위해 포스코 AI 아카데미를 수강하면서 코딩을 접하게 되었고 그 과정에서 웹 개발 요구사항을 받게 되었습니다. 이 과정에서 어떻게 웹 서비스가 구현이 되는지 관심을 가지게 되었고 여러 서비스들의 구조와 동작방식을 알고 싶게 되었습니다. 이후 Java를 공부하며 기본적인 언어를 공부하게 되었고 좀 더 역량을 쌓기 위해 우아한테크코스를 수강하게 되었습니다. 우아한테크코스에서는 TDD기반의 프로그래밍 기법부터 클린코딩, DDD와 같은 추상적인 방법론까지 현업에서 추구하는 기법들을 배울 수 있었습니다. 이것들을 바탕으로 Java, Spring, AWS, MySQL 등 다양한 기술들을 통해 위치기반 여행기록 서비스 행록을 개발했습니다. 또한 기술적 측면뿐만이 아닌 다른 파트, 프론트 앤드와 소통을 하기 위해 RestDocs, Slack, Notion를 사용하여 협업을 할 수 있게 많은 것을 문서화하며 진행하는 법도 익혔습니다. 이러한 역량과 경험을 바탕으로 백엔드 개발자로서 현업에서 좋은 서비스를 구축하고 발전시키고 싶습니다.

  2. 개발 프로젝트 진행 시 주요 담당 역할

    행록 프로젝트를 진행하면서 담당했던 역할은 크게 3가지가 있습니다.

    “API 기능 개발”

    우선 가장 기본적인 백엔드 API 기능 개발담당이었습니다. 그중에서도 제가 맡은 기능은 경비 조회, 공공 환율데이터 조회, 공유 상태 수정 및 공유 여행 조회, 전체 여행 페이지네이션 등이 있습니다. 개발하면서 가장 신경을 쓴 것은 전체적인 코드의 통일성을 위한 컨벤션을 맞추는 것이었습니다. 이를 통해 좀 더 빠르게 서로의 코드를 리뷰할 수 있었고 이를 통해 빠르게 프로젝트를 진행할 수 있었습니다.

    “서버 모니터링”

    두 번째로 담당하였던 것은 서버 모니터링 구축이었습니다. 행록에서는 서버를 모니터링하기 위해 그라파나를 채택하였습니다. 그 이유는 우선 서버에 설치할 공간이 있다면 추가적인 비용이 들지 않으며 그라파나 쿼리를 통해 저희가 모니터링할 매트릭을 자유롭게 커스텀할 수 있다는 점에서 채택하였습니다. Spring을 모니터링하기 위해 Spring 액츄에이터, 로그를 수집하기 위해 프롬테일과 로키를 사용하였으며 서버의 CPU상황을 모니터링하기 위해 Node Exporter로 매트릭을 수집하여 이를 그라파나로 통해 시각화하였습니다.

    “Tomcat Hikari CP 최적화”

    마지막으로 담당했던 주요 역할은 Tomcat과 Hikari CP의 설정 최적화였습니다. 모니터링 서버에서 K6를 사용하여 테스트를 하여 최적의 설정을 찾았습니다. Tomcat은 Max Thread pool를 변수로, Hikari CP의 경우 공식 문서에서 추천하는 커넥션 락이 걸리지 않는 최소한의 커넥션 수와 이론상 커넥션 락이 생기지 않는 범위에서의 변수로 테스트를 진행하여 최적화를 시켰습니다.

  3. 성격적 특징

    “실행력”

    목표에 도착할 수 있는 가장 좋은 방법은 다양한 시도를 통해 경험치를 쌓는 것이라고 생각합니다. 이에 항상 도전에 두려워하지 않고 움직일 수 있는 실행력을 가질 수 있게 되었습니다. 이러한 성격을 가지게 된 계기는 취업 준비를 하며 경험해 본 ‘마시멜로 챌린지에서 얻은 교훈 덕분입니다. 이 챌린지에서는 완벽한 설계는 없기에 목표에 가장 잘 도착할 수 있는 방법은 다양한 시도를 통한 경험을 쌓는 것이었습니다. 이 교훈을 통해 저는 다양한 도전을 마다하지 않고 직접 실행해 보며 그 결과를 직접 경험해 보았습니다. 이러한 저의 실행력은 다양한 방법이 있는 코딩에서 좋은 선택을 할 수 있게 만들어주는 원동력이 되었습니다.

    “협업”

    대학교 시절 다양한 동아리 활동과 공모전의 경험으로 다른 분야의 사람 들고 협업을 하는 경험을 쌓았습니다. 미술 동아리에서는 부회장 및 행사 부장으로서 동아리를 이끌고 전시회를 기획하였고 주짓수 동아리에서는 회장으로서 동아리 운영을 하며 다양한 사람들을 이끌 수 있는 리더십을 기를 수 있었습니다. 또한 신입생 때 나간 2014 대한민국 창작대전, ALTAIR 최적화 대회와 같이 여러 공모전에서 사람들과 협업을 하며 수상을 경험이 있습니다. 또한 졸업 후에는 포스코 취업아카데미, AI Big DATA 아카데미, KB It’s Your Life나 우아한테크코스 같은 다양한 교육 프로그램에서 프로젝트를 하면서 다른 사람들과 협업을 하는 경험을 쌓아왔습니다. 이러한 협업 경험은 기획, 프론트, QA 등 다양한 분야의 사람들과 협업을 해야 하는 백엔드 직군에서 큰 장점이 될 것입니다.

댓글