Profile

INTRODUCE

안녕하세요. 2년 6개월 경력의 자바 웹 백엔드 개발자 유경호입니다.

최근에는 클라우드 네이티브와 마이크로서비스, 컨테이너 가상화 기술과 더불어 Jenkins를 활용한 CI/CD 구성, Kotlin과 같은 다양한 기술들에 관심을 갖고 학습 하였습니다.

특기인 기술로는 Java와 Spring으로 웹 애플리케이션을 개발하는 것을 즐깁니다. JPA(Spring Data JPA와 QueryDSL을 함께 사용)를 활용하여 개발하는 것을 즐깁니다.

혼자서만 잘 개발하는 것이 아닌 문제와 해결을 팀원들과 함께 나누는 것을 즐깁니다.
주어진 요구사항에 대한 개발 업무만 잘 수행하는 것이 아닌 해당 작업의 필요성을 검토하고 사용자 입장에서 필요한 새로운 feature를 제의하는데도 소질이 있습니다. 이를 주변 동료들도 인정해 주었습니다.

기술적 요약

  • java8 & Spring Boot 2.x 활용한 웹 백엔드 개발 능력 보유
  • OOP 패러다임에 대한 이해도가 높게 있으며, 이 능력을 활용한 객체지향 설계 능력 보유와 스프링 생태계 내부 동작 원리를 이해할 수 있는 능력 보유
  • JPA & QueryDSL & Spring Data JPA를 활용한 Persistence layer 개발 능력 보유
    • 전 우아한형제들 리드 개발자 출신 강사의 JPA 관련 인터넷 강의를 21년도에 모두 수강하였으며 이를 2년간 활용하였음.
  • Spring Security를 활용하여 Spring Boot 애플리케이션에 토큰기반 인증&인가를 적용할 수 있음.
  • Spring Cache Abstraction과 Redis를 결합한 캐싱 활용
  • 관계형 데이터베이스(RDBMS)에 대한 이해도 및 ERD 설계 능력 보유
  • Leonard Richardson의 Maturity Model (성숙도 모델)에 따른 REST API Level 2 수준의 설계 경험 및 능력 보유
  • Jenkins와 클라우드 가상화 기술(aws), 컨테이너 가상화 기술(docker)을 활용한 서버 배포 능력 보유
  • 2년간 javascript & vue2 기술을 활용한 프론트엔드 개발 경험 보유
  • AWS 클라우드 환경에서 개발&배포 경험 보유
  • HTTP, WebServer, WAS에 대한 이해도 보유와 활용 능력
  • 주어진 요구사항이나 업무에 대해 더 나은 프로세스로 개선해본 다수의 경험이 있음.
  • Jira 및 Slack, Mattermost를 활용한 업무 협업 경험

MSA와 관련한 개인적인 기술 경험 영역; 실제 프로덕트에 적용해보진 못했으나 개인적으로 경험해본 것들을 기술합니다.

  • Spring Cloud 생태계를 활용한 MSA 구축
    • Service Discovery(Eureka), API Gateway, Configuration Server & Spring Cloud Bus, RabbitMQ, Resilience4j, Sleuth & zipkin
  • 개인 PC에 kafka 클러스터 구축 및 kafka connector를 활용하여 Spring Boot 웹 애플리케이션, postgreSQL DB에 데이터 동기화
  • prometheus & grafana를 활용한 Spring Boot 웹 애플리케이션에 대한 모니터링 시스템 구축
  • Kotlin 언어 학습
  • Jenkins + Ansible(IaC) + Kubernetes 클러스터를 활용한 CI/CD 파이프라인 구축

SKILLS

Back-end

  • 3 Java
  • 3 Spring Boot
  • 3 QueryDSL
  • 2 Android
  • 2 C
  • 3 Spring Framework
  • 3 JPA
  • 3 Spring Cloud
  • 2 Node.js
  • 2 Python

Database

  • 3 MySQL
  • 3 PostgreSQL
  • 3 Redis
  • 1 MongoDB

Front-end

  • 2 vue2
  • 2 JSP
  • 1 HTML/CSS
  • 2 javascript
  • 2 Thymeleaf

Etc

  • Git / Github / GitLab
  • JIRA
  • jenkins
  • prometheus&grafana
  • ansible
  • rebbitmq
  • Agile
  • Docker
  • AWS
  • Spring Boot Admin
  • kafka
  • MSA

EXPERIENCE

2021. 04 ~ 2023. 08

2년 4개월

이투스에듀 (Etoos Education)

java 웹 서버 개발자 - 공통서비스개발팀(2021), 진단평가개발팀(2022), O2O개발팀(2023)
  1. 프로젝트명 : 현강무패 프로젝트
    • O2O개발팀
    • 주요 업무 : 백엔드 / 프론트엔드 개발
    • 담당 역할 : API 개발, 배치 프로세스 개발, 화면 개발
    • 개발 환경 : Java, Spring Boot, JPA, Spring Data JPA, Spring Batch, QueryDSL, Redis, Jenkins, nginx, vue2, postgreSQL, AWS, prometheus&grafana, spring boot admin
    • 진행 기간 : 2023년 3월 ~ 2023년 8월
      • 1차, 2차, 3차로 운영 기간을 나눠서 진행함.
      • 나눠진 개발 단위에 따라 릴리즈 후 새로운 피드백 및 요구사항을 반영하기 위해 나눠 개발함.
    • 프로젝트 진행 인원 : 4 (팀원 3, 팀장1)
    • 상세 내용 : 오프라인 학원에서 강의 녹화 영상을 업로드하여 학생들에게 강의 영상 스트리밍을 제공하는 웹서비스를 신규 개발하여 운영하였음.
      • 요구사항에 따른 API 설계 및 개발 작업 수행.
      • 디자인 및 퍼블리싱된 작업물에 vue2를 활용한 화면 개발 및 API 연동
      • 외부 업체의 온라인 동영상 솔루션(API)을 연동하여 개발함.
      • 자사 디비에 업로드된 데이터와 영상 스트리밍 솔루션에 업로드된 영상강의를 매핑하기 위한 배치 프로세스 개발을 담당하였음.
        • 배치 작업을 진행하는 인스턴스를 따로 배포, 운영하였음.
        • 정해진 시간(cron 식 활용)마다 솔루션에 업로드된 온라인 영상과 자사 DB에 담긴 영상 데이터를 매핑하는 작업을 수행함.
    • Skill Keywords
    • Java8 Spring Boot JPA Spring Data JPA Spring Batch QueryDSL Redis Jenkins nginx vue2 postgreSQL AWS prometheus&grafana pinpoint spring boot admin Git GitLab Jira
  2. 프로젝트명 : 모지(MOJI) - 대학 입시 모의지원 및 합격 예측 서비스
    • 진단평가개발팀
    • 주요 업무 : 백엔드 / 프론트엔드 개발
    • 담당 역할 : 회원 관리 API 및 화면 개발, 이투스 통합 회원 시스템 연동, 수능 성적 산출 비즈니스 로직 구현 코드 구조 개선
    • 진행 기간 : 2022년 4월 ~ 2023년 2월
    • 프로젝트 진행 인원 : 5 (팀원 4, 팀장 1)
    • 상세 내용 : 수능 시험을 친 학생이 자신의 수능 성적을 입력하면 해당 성적을 분석하여 대학 별 합격률을 예측해주는 서비스임. AI 합불 예측 모델은 작년에 개발되었으며 이번 프로젝트 기간 동안에는 수정된 요구사항에 따른 API 수정, 핵심 비즈니스 로직 수정, 이투스 통합회원 연동을 진행함.
      • 요구사항에 따른 API 설계 및 개발 작업 수행.
      • 디자인 및 퍼블리싱된 작업물에 vue2를 활용한 화면 개발 및 API 연동
      • 기존의 자체 회원 관리 시스템을 이투스 통합 회원 시스템과 연동하는 작업을 완료함.
      • 기존 비즈니스 로직에서 회원의 인증/인가와 맞물리는 부분을 분석하고 수정하여 이투스 통합 회원 시스템과 이상 없이 작동하도록 구성함.
      • 기존 회원을 통합 회원으로 변경하는 비즈니스도 구현함. (API를 설계 및 구현하고 이 과정에서 외부 부서와의 협의도 발생함.)
      • 수능 성적 산출 비즈니스 로직 구현 코드 구조 개선
        • 10,488줄의 덩어리 파일을 추상화하여 분리함, 유지보수성 개선
        • 매년 입시 비즈니스 환경의 변화에 따라 10,488줄의 코드 덩어리 내에서 로직의 유지보수가 이루어지던 것을 정시 유형별, 대학별, 모집별로 추상화시킴으로써 분리된 구조로 유지보수할 수 있게 됨.
        • 스프링 부트의 FactoryBean에서 착안된 구조로 반복되는 클래스 작성, 추상 메서드 재정의 작업의 중복도 제거함.
        • 메서드 명을 리플렉션 API를 통해 호출하던 부분을, 추상화하여 스프링 컨텍스트에 빈 등록하여 관리하도록 수정함.
        • 런타임 환경에서 리플렉션 API를 통해 매번 호출되던 것들이 컴파일 과정에서 객체로 빈 등록되어 호출 되니 12% 정도 시간적인 성능 개선이 이루어짐.
        • 노션으로 정리한 문서 링크: https://kyeonghoyoo.notion.site/3276c9a55c6b4668a123fae911a16384?pvs=4
      • 주도적으로 사람이 수행하던 작업을 시스템이 자동화 하도록 기획을 보완하여 B2C 부분의 기획을 재정립한 경험이 있음.
        • 사업팀에서 이 때 높은 평가를 해주었음. (레퍼런스 체크를 통한 검증 가능)
    • Skill Keywords
    • Java8 Spring Boot Spring Security MyBatis JPA Spring Data JPA QueryDSL vue2 postgrSQL redis Jenkins nginx AWS Git GitLab Jira
  3. 프로젝트명 : 전국 모의고사 통합 플랫폼(MIS)
    • 주요 업무 : 백엔드 / 프론트엔드 개발
    • 담당 역할 : 보일러 플래이트 구성 담당, 회원 관리, 게시판 관리에 관한 API 설계 및 개발, vue2와 vuetify를 활용한 화면 개발, POI 라이브러리를 활용한 엑셀 개발 모듈 구현, 외주 개발자의 작업물 리펙토링
    • 진행 기간 : 2021년 4월 ~ 2022년 2월
    • 프로젝트 진행 인원: 6명 (팀장1, 팀원2, 외주3)
    • 상세 내용 : 과거 delphi로 개발된 ERD 서비스인 이투스 전국 모의고사 서비스의 백오피스를 지원하는 통합 관리 플랫폼을 Java로 신규로 개발하는 프로젝트임.
      • 스프링 부트를 이용한 보일러플레이트 작업을 진행함. JWT 토큰 기반 인증/인가, Response Body에 대한 구조, 예외 처리 로직, JPA 관련한 properties 세팅, 각 레이어 별 파일 구조
      • 요구사항에 따른 API 설계 및 개발 작업 수행.
      • 로그인, 회원가입, 사용자 인증/인가 처리
      • 게시판 관리
      • vue2와 vuetify를 활용한 화면 개발
      • vuetify 스토어 내에 유료 template를 구매해서 템플릿을 활용하여 개발함.
      • POI 라이브러리를 활용한 엑셀 개발 모듈 구현
        • 대상 고객인 학생, 선생님, 내부 직원을 위한 자료를 엑셀 파일로 내려주는 비즈니스 로직이 있음. 모의고사 통계 데이터로 다양한 유형의 엑셀 파일이 존재 하였음. 기존의 플랫폼에서는 Apache POI 라이브러리로 일일히 각각 전부 수작업으로 그리는 식으로 작업을 해왔음. 이에 따라 유지보수성도 떨어지고 신규 요구사항이 발생했을 때 작업 비용도 상당히 발생함.
        • 이러한 작업을 추상화하여 찢고 공통 모듈화 시켜 코드 생산성을 높임.
        • 데이터베이스에서 색인해온 데이터를 자바 DTO 객체로 변환하여 해당 객채를 통해 엑셀 파일을 생성할 수 있는 기능을 제공함.
        • 어노테이션 기반으로 자바 객체에 엑셀 스타일과 칼럼명을 지정할 수 있게 함.
        • 팩토리 메서드 패턴을 적용하여 새로운 형식의 엑셀 작업이 추가되면 사이드 이펙트를 최소화하여 새로 추가할 수 있도록 설계함.
        • 사용자가 업로드한 엑셀 파일을 읽어 자바 객체로 변환하는 기능을 제공함.
      • 외주 개발자의 작업물 리펙토링, 조회 API에서 JPA&QueryDSL을 사용한 1:n 관계의 페이징 쿼리에서 문제를 발견하여 리펙토링함.
      • 통계 데이터를 XML 파일로 내려주는 부분에서 메모리 내에 과하게 적재되는 부분을 조사 및 분석하는 과정 중 Spring 프레임워크 내에서 무의미하게 `ReturnValueMethodParameter` 타입의 객체를 메모리에 유지하는 것을 발견함. 이를 보고하여 Spring 진영에서 정식 버그로 채택 후 수정하였음.
    • Skill Keywords
    • Java8 Spring Boot JPA Spring Data JPA Spring Batch QueryDSL Jenkins nginx vue2&vuetify postgreSQL AWS Git GitHub Jira
  4. 기타 업무
    • 경쟁사 데이터를 크롤링하는 서비스를 운영해봄.
      • 일정 주기마다 실행되는 배치 작업 방식의 서비스로 AWS lambda를 이용해 작동함.
      • selenium 라이브러리를 사용하여 개발하였고 크롬 엔진에서 동작함.
    • 첫 입사 당시에 코드 리뷰 문화가 없던 팀에 git flow 기반 브랜치 전략을 도입하고 코드리뷰를 도입하는데 기여함.

2017. 07 ~ 2020. 03

2년 8개월

DN Lab

학부생 연구원
  • 동서대학교 소프트웨어공학 연구실 (인원 10~14명)
  • 학과 커리큘럼에만 그치지않고 소속 연구원들과 다양한 소프트웨어 개발을 함께 연구함.
  • 평일 오전 10시에 출근, 오후 10시에 퇴근이 기본룰
  • 매주 금요일마다 세미나를 진행하여 서로 배운걸 리뷰하고 피드백하는 활동을 가짐
  • 웹 개발을 활용한 프로젝트 외에도 Android, MR, Unity(c#), IoT 하드웨어/소프트웨어를 활용한 연구실 프로젝트 참여
  • 다양한 학술제, 전시회 참여 경험
  • CAREER 보다는 EXPERIENCE

PROJECTS

2021.01.04 ~ 2021.03.12

CODEV21 프로젝트 ~J2KB 팀과 각 팀들의 프로젝트를 공유하는 웹 서비스~

J2KB 웹 스터디 모임에서 진행한 토이 프로젝트
  • GitHub Link: https://github.com/KyeonghoYoo/CODEV21-BACKEND
  • 역할: Board(게시판) API 개발, Vote(투표) API 개발을 전담
  • 프로젝트를 진행하며 경험해본 것들
  • 요구사항을 정의하고 그에 따라 데이터 설계, 데이터베이스 설계를 진행함. 설계 관련 지식들을 리마인드하고 프랙티스하는데 도움이 됐음.
  • 프로젝트 투입 전 JPA, Spring Data JPA와 QueryDSL을 3개월 간 학습했었는데. 이번 프로젝트가 좋은 프랙티스가 됐음.
  • QueryDSL의 BooleanExpression을 통한 동적 쿼리 작성 연습
  • REST Docs를 활용하여 프론트팀과의 협업을 원활히 진행함
  • MapStruct 자바 라이브러리 학습 및 적용, Entity 에서 Dto, Dto에서 Entity의 변환을 간단한 인터페이스 작성으로 해결함.
  • 회원 가입 시 J2KB 스터디의 GitHub organization에 포함된 GitHub 계정들만 회원가입할 수 있도록 GitHub의 Oauth2, API 활용
  • Git으로 형상관리 시 GitFlow를 준수하며 PR과 CodeReview를 적극적으로 활용, 또한 git의 rebase와 squash를 학습하고 사용해봄.
  • Spring Test 시에 모든 테스트 코들은 Spring Context를 공유함. 이러한 점이 테스트 코드간의 충돌을 야기한다면 @DirtiesContext 어노테이션을 통해 Spring Context를 분리해줄 수 있음.
  • Jackson 라이브러리가 Json 데이터를 오브젝트에 매핑하여 직렬화할 때의 방식을 커스터마이징할 수 있음.
  • 서버 어플리케이션에서 일어나는 Exception과 해당 비즈니스의 흐름에 맞지않아 임의로 발생시키는 Exception을 @ControllerAdvice와 @ExceptionHandler를 통해 예외 처리 대응을 확실히함
  • Skill Keywords
  • Java Spring Framework Spring boot Spring Security Spring REST Docs MyBatis JPA(Java Persistent API) Spring Data JPA REST API Querydsl H2 Database MariaDB Redis JWT Oauth2

2019. 06 ~ 2019. 12

지능형 스몰웨딩 플랫폼 구축을 위한 클라우드 기반 고객 및 일정 관리 시스템 개발

㈜프레시앤텍 & 동서대학교 산학협력단 협업 프로젝트
  • 프로젝트 전체 내용은 RESTful Service 구현, 프론트엔드팀은 React로 웹을 개발하고 백엔드팀은 Spring을 활용해 REST API를 개발
  • 백엔드 개발 내용은 고객관리, 예약관리, 일정관리, 정산관리, 통계분석, 알림 등 웨딩업체 ERP 서비스 구축을 위한 데이터베이스 설계 및 구축, REST API 개발
  • 백엔드 팀은 본인 1명 이었으므로 백엔드 관련 모든 설계 및 구현을 1인으로 진행함
  • Spring Boot, MyBatis, MySQL, Swagger 등을 사용
  • AWS EC2를 서버 인프라로 하여 배포
  • AWS RDS의 MySQL를 데이터베이스로 사용
  • 팀원들 간 Gitlab, JIRA를 활용하여 협업 능력 강화에 도움이 된 프로젝트
  • 학부생 중 대표를 맡아서 다양한 문서작업, 사업비 운용, 업무 보고 등의 책임을 맡아 수행
  • 해당 어플리케이션을 협력 업체에서 가져가 일부 수정 후 고객 유치 마케팅에 활용함
  • Skill Keywords
  • Java Spring Framework Spring boot MyBatis MySQL Apache tomcat REST API Swagger GitLab JIRA AWS EC2 AWS RDS

2018. 07 ~ 2018. 12

식자재 유통 중개 서비스를 위한 개방형 웹 기반 플랫폼 개발

㈜제이에이치코리아 & 동서대학교 산학협력단 협업 프로젝트
  • 프로젝트 전체 내용은 RESTful Service 구현, 프론트엔드팀은 Vue.js로 웹앱을 개발하고 백엔드팀은 Spring을 활용해 REST API를 개발
  • 백엔드 개발 내용은 식자재 중개, 결제 및 통계자료 관련 리소스 제공을 위한 데이터베이스 설계 및 구축, REST API 개발
  • 식자재 유통 ERP를 위한 REST API 구현
  • Spring Framework, MyBatis, MySQL 등을 사용
  • 처음으로 경험한 기업체 협업 프로젝트로 동기 1명과 백엔드 개발을 맡음
  • Cafe24의 IaaS 클라우드 호스팅 서비스를 활용하여 처음 배포를 경험함
  • 혼자가 아닌 두 명이서 하나의 백앤드 프로젝트를 함께 개발하는 것이 처음이여서 프로젝트 정리가 아주 미숙했음, 하지만 모든 기능의 동작을 구현함
  • 처음으로 경험한 개발자 여럿과 함께 진행한 프로젝트였음. 프로젝트 진행 간 팀의 소통 및 협업이 얼마나 어렵고 중요한지 깨닫게 됨
  • Skill Keywords
  • Java Spring Framework MyBatis MySQL Apache tomcat REST API Swagger IaaS

EDUCATION

2014. 03 ~ 2020. 02

동서대학교 졸업

컴퓨터공학부 / 소프트웨어공학 전공

2011. 03 ~ 2014. 02

동성고등학교 졸업

부산광역시 부산진구

ETC

2018. 12

동서대학교 캡스톤디자인 경진대회 최우수상

시각장애인들을 위한 자율주행 지팡이

2018. 09

제4회 부산 국제 창업 아이디어 경진대회 우수상

시각장애인들을 위한 자율주행 지팡이

2018. 07

삼성 멀티캠퍼스 집합 Spring 교육 수료

Spring Framework를 활용한 OpenAPI 서비스 개발

2018. 02

삼성 멀티캠퍼스 집합 Spring 교육 수료

Java Framework - Spring, iBatis, MyBatis 연동

2017. 10

고급프로그래밍 경진대회 최우수상

교내 알고리즘 경진대회 수상

2017. 07

ICCT Best Paper Award

User Location based Travel Information Chat-Bot Service for Convenience of Travel

2015. 05 ~ 2017. 02

육군 병장 만기 전역

수색대대 분대장, 200km 행군 완수