미리보기
기본 정보

지속적인 성장 을 위해 탐구하고 끊임 없이 소통 하는 것 을 좋아하며 항상 물음표를 던지는 백엔드 개발자 임동혁 입니다.
자기소개
여러 프로젝트에서 웹과 앱 서비스를 기획/개발하였습니다.
주로 백엔드 개발을 담당했으며 필요에 따라 프론트 엔드 개발을 겸하였습니다.
항상 성장 하고자 다양한 기술들을 습득해왔으며 기본기를 다지기 위해 발전하는 자세 로 공부하고 있습니다.
어떤 환경에도 적응 할 수 있습니다.
처음 개발하는 프레임워크도 도전적인 자세로 공부하고 주위 사람들과 공유해 발전했습니다.
또한, 성공적인 개발은 혼자가 아닌 함께 만들 수 있다고 생각하기에 팀원들과 적극적으로 커뮤니케이션하며 성장하고 협업합니다.
경력
엑스플라이어
백엔드 매니저 | 프로덕트팀 | 재직 중
2024.01. ~ 재직 중 (1년 2개월)
엑스플라이어는 디지털 광고 플랫폼을 제공하고 있는 회사입니다.
신규 디지털 광고 플랫폼을 마이그레이션 하기 위해 다음과 같은 업무를 진행했습니다.
주요 업무
이메일 전송, SMS 전송, 카카오톡 전송 등의 기능을 제공하는 메시지 서버의 기능 구축을 위한 아키텍처 설계 및 구축
비동기 식 구조로 구현하여 기존 기능 대비
약 100% 성능 개선
약 5만건 메일 전송 3시간 → 1.5시간
메시지 서버 → AWS Lambda 기반 메시지 전송 프로세스 구축
서버 2대 비용 절약
비동기 컨텐츠 업로드 및 컨버팅 기능 구축
presinged Url 을 사용한 대용량 동영상/이미지 업로드 대응
이미지 및 동영상 업로드 시 S3 이벤트 알림을 통한 비동기 컨텐츠 컨버팅 작업 및 업로드 상태 업데이트 수행
AWS Lambda 기반 이미지 컨버팅 프로세스 구축
AWS MediaConvert 기반 동영상 컨버팅 프로세스 구축
편성표 전송 및 광고 플레이어앱 연결 상태 관리 프로세스 설계
SSE와 Kafka를 활용한 플레이어앱 연결/해제 상태 추적 기능 설계 및 구현.
이벤트 기반 상태 관리로 광고 송출 지원.
스크린 상태 신뢰도 ↑
Kafka 구축 및 활용법 공유
신규 프로젝트에서 사용하는 kafka 문서화 및 세미나를 진행하고 메시지 유실을 방지하기 위해 어플리케이션단의 설계 진행 및 boilerplate 제작
메시지 관리 및 kafka 사용법 공유
운영 환경 배포 파이프라인 구축 및 관리
AWS ECS, RDS, ElastiCache, S3, CloudFront, SES, SNS, SQS 등 다양한 클라우드 서비스 활용을 통한 인프라 구축 및 기능 개발
백엔드 및 프론트엔드 배포 효율화를 위한 Jenkins 환경 구축
개발 서버 LOCAL 환경 이전
AWS 개발 관련 서버, DB 이전
LOCAL 환경 배포 및 배포 프로세스 효율화를 위한 Jenkins 환경 수정
DEV 관련 인프라 비용 절감
레거시 프로젝트 백엔드 인프라 자원 절감 지원
머스타드 및 오디 백엔드 인프라 scale down 시 정상적으로 서비스가 동작하도록 배포
레거시 프로젝트 인프라 비용 40% 절감
서비스의 성장과 기술적 완성도 양쪽에 관심을 가지고, 한 명의 프로덕트 제작자로서 오너십을 가지고 업무를 진행하였습니다.
기술 스택
Java, Spring Boot, AWS, querydsl, spring-jpa, Spring Security, Kafka
프로젝트
WINDMEAL
개인
2023.09. ~ 2024.01.
교내 학생들이 직접 배달 기사가 되어 배달을 필요로 하는 학생들에게 음식을 배달해주고, 이에 대한 보상으로 소정의 배달료를 받을 수 있도록 중개해주는 플랫폼을 개발했습니다.
Load balancer(admin1)도입 과정에서 모든 인스턴스를 free-tier 로 실행시키기 위해 다른 계정에서 was1(admin1)과 was2(admin2) 를 실행시켰는데 서로 다른 계정에서 실행되기 때문에 VPC 가 달라 ALB 도입에 어려움이 있었습니다.
해결하기 위해
VPC-peering
을 통해 admin1 계정의 VPC에서 admin2 계정에서 실행되고 있는 was2 의 VPC 에 접근할 수 있었습니다. 이를 통해 부하 분산을 위한 설정을 할 수 있었습니다.
꾸준히 공부하며 CQRS 패턴에 대해 알고 있었는데
@Transactional(readOnly = true)
를 통하여 쓰기 DB와읽기 DB
를분리함
으로 어느정도 대체할 수 있다고 판단되어 도입했습니다.공통되는 생명주기를 갖는 데이터(ex 주문의 메뉴 데이터) 의 경우 한 단위로 묶어 Document DB(mongoDB) 로 저장하여 성능을 더 높일 수 있었지만 오버스펙이라고 생각되어 mysql 의 복제를 통해 master 의 경우 write , slave 의 경우 read 작업을 수행할 수 있도록 구현하였습니다.
배달 요청 시 자동으로 주문과 매칭되는 시스템으로 구축되어있는데 동시에 배달요청이 발생하는 경우 1 주문에 대해 여러개의 배달이
중복 매칭되는 문제
가 발생하였습니다.여러 방식을 고민하였지만 redis 의 redisson 방식을 사용하여
분산락
으로 문제를 해결하였습니다.AOP 도입
을 통해 코드의재사용성
을 높일 수 있었습니다.
주문 목록 조회 시
캐싱
을 통해 성능을 올릴 수 있었습니다.처음으로 보는 페이지의 경우 캐싱이 되어야 하지만 모든 페이지가 캐싱되는 경우 너무 많은 리소스를 차지한다고 판단하여 처음 보이는 페이지만 캐싱처리를 하고 나머지 페이지는 하지 않음으로써 free-tier 로 사용하는 redis 의 한계를 극복하기위해 노력하였습니다.
알림기능을 효율적으로 사용하기 위해
Event 방식을 도입
하였습니다.공통 기능인 알람기능을 여러 서비스에서 Event publishing 을 통해 사용할 수 있도록 Event 방식을 도입하였습니다.
GitHub : https://github.com/WINDMEAL-DELIVERY/WINDMEAL_BACKEND
SPOTCAST
개인
2022.09. ~ 2023.10.
서울과 지방의 예체능 기회 불균형 해소를 위해 만들어진 캐스팅/오디션 플랫폼
JWT 를 사용한 사용자 인증, 인가 관리
전반적인 로그인 회원가입, 사용자 정보 조회, 수정, 로그인, OAuth2 로그인, 회원가입 기능을 구현했습니다.
이메일 인증과 관련된 로직을 수행했으며 인증번호 전송 시 비동기 처리를 통해 성능을 향상시켰습니다.
이메일 전송 API 때문에 서버 속도가 느려지는 경우가 존재했는데 100% 바로 동작해야 하는 기능이 아니라고 생각되어 비동기 처리를 통해 성능을 향상시킬 수 있었습니다.
Refresh Token의 경우 Session 과 Redis 를 고민했는데 Session 의 경우 EC2 를 Free tier 로 배포하기 때문에 적은 용량의 메모리를 사용하는 서버에는 적절하지 않다고 판단하여 Redis 에 저장했습니다.
Access Token 의 경우 Body 를 통해 FrontEnd 에 전달해서 FrontEnd 에서 저장하고 있다가 Request 시 Header 에 담아서 넘겨주는 방식을 고민했지만 FrontEnd 에서 localStorage 에 가지고 있는 경우 탈취 위험이 있다고 판단하여 Cookie 에 저장했습니다.
배포 자동화
EC2, Jenkins, Docker Hub 를 사용하여 자동 배포를 진행했습니다.
사용자 간 쪽지 전송,조회 삭제 기능을 구현했습니다.
프론트엔드 개발자가 처리하기 용이하도록 전반적인 예외 처리 시스템을 구축하였으며 응답 값을 통일 시켰습니다.
S3 를 사용하여 이미지를 저장하고 삭제할 수 있도록 util 클래스를 만들었습니다.
GitHub : https://github.com/F3F-T/SPOTCAST
독설
카카오엔터프라이즈 SW아카데미
2023.03. ~ 2023.06.
쉽게 설문조사를 커스텀하여 생성하고 응답할 수 있는 플랫폼
팀 구성 ― 프로젝트 리더
기술적인 지식을 전달하고 프로젝트의 진행 상황을 관리하는 프로젝트 리더로 프로젝트에 참여했는데 당시 5명중 3명의 팀원이 웹 개발에 대한 지식이 없어서 멘토링을 진행하며 개발을 진행했습니다.
시간이 부족하여 테스트 코드를 제대로 작성하지 못하였지만 구현된 기능의 동작 원리를 설명해 주며 구현을 이어갔습니다. 구현 시작 단계에서는 스터디를 위한 시간이 많이 소요 되었으나 배포까지 완료하였습니다.
최종적으로 저희 팀의 커뮤니케이션 능력과 문제 해결 능력을 크게 향상시키게 되었습니다.nGrinder 를 사용하여 스크립트를 직접 작성해 부하 테스트를 진행했습니다.
1분동안 여러 프로세스를 거치는 스크립트를 작성했는데 너무 많은 API를 호출하는 스크립트를 작성해서 성능이 TPS 는 130 MTT 가 2000 이상으로 측정되는 것을 확인했습니다.
그래서 적절한 API 호출 스크립트로 수정 이후 성능이 TPS 는 150, MTT 는1000 정도로 향상 시킬 수 있었습니다.Chat-GPT 를 활용하여 챗봇 형식으로 사용자가 객관식 질문을 선택하면 해당 설문 질문에 대한보기 자동 생성 기능을 구현했습니다.
배포 자동화
GitLab , Jenkins 그리고 DockerHub 를 사용하여 배포 환경을 설정해주었습니다.
Jenkins pipeline 을 작성해서 자동 배포를 진행했습니다.
설문조사 생성, 수정 삭제 구현
설문조사 임시 저장 기능 구현
설문 내용을 미리 저장해두고 나중에 수정할 수 있도록 구현하였습니다.
공통 로직인 사진 업로드 및 삭제를 위한 S3 Util 클래스 구현
GitHub : https://github.com/EFoF/EFoF_BACKEND
포트폴리오
대외활동
카카오엔터프라이즈 SW 아카데미
가천대학교
카카오엔터프라이즈 SW 아카데미에 참여하여 전반적인 웹 서비스에 필요한 프레임워크들을 습득하고 웹 서비스를 구축하기 위한 아키텍쳐에 대해 공부했습니다.
그리고 프로젝트 리더로서 프로젝트에 참여하여 팀원들에게 스터디를 진행하고 공부하며 풀스택 개발을 진행했습니다.
덕분에 실제 서비스 개발과 유사한 경험을 하며 문제 해결 능력과 협동심을 향상시켰습니다.
교육
가천대학교
대학교(학사) | 소프트웨어학과
2018.03. ~ 2024.02. | 졸업