미리보기
기본 정보

개발자의 기본은 개선을 위한 끊임없는 노력과 성장이다. 노력하는 성장형 개발자 이정범입니다.
기술 스택
Java, Spring, Spring Batch, MySQL, junit5, SonarQube, JPA, mybatis
프로젝트
Open API를이용한 차수자동화 시스템
기타
2022.08. ~ 2023.08.
프로젝트 목적 : 쿠폰 시스템을 개발하며 개선을 위한 요구사항 외 고려했던 것들
K-Hacakthon 11 영남예선 참가 200 팀 中 영남본선 진출 14팀 작
프로젝트 내용 : 도서 판매 사이트를 구축하며 체계적으로 웹사이트 개발하여 배포.
인력 구성 : BackEnd개발자 2명, IOT 및 CV 개발자 1명, PM 및 기획 및 FE 개발자 1명(기여도 : 70%)
- 아키텍처
· 빠른 태풍 정보를 얻기 위한 기상청 API 서버
· 주변안전을 파악하기 위한 인체 인식 서버(YOLOv5) · 양방향으로 동영상을 뿌리기 위한 RTSP
· 웹에서 화면을 보여주기 위한 HLS 서버
· 각 지역의 중앙서버역할을 할 라즈베리파이 서버
- 메인 업무
· 대시보드 개발 · HLS 서버 개발
· 프로젝트 기획서 작성 · 프로젝트 매니지먼트
- 발생 문제
· 처음에는 대시보드를 기획하지 않았지만, 마산시 차수벽 문제점에 중앙 확인이 중앙 확인이 불가능한 점이 추가되어 대시보드를 추가 기획.
이때 기존 HTTP 통신으로는 양방향통신이 되지 않는다는 문제 발생
- 문제 해결
· 통신 방법을 양방향으로 통신이 가능한 RTSP로 변경
이후 RTSP를 웹에 보여줄 방법에 대한 문제가 발생하였으나 HLS서버 구축으로 해결.
- 회고
· RTSP가 아닌 WebSocket통신을 사용하는 것이
더 좋은 결과를 가져올 수 있지 않았을까? 라는 아쉬움이 있다.
도서 판매 사이트 (InkBridge)
NHN Academy(수료 프로젝트)
2024.02. ~ 2024.03.
프로젝트 목적 : 쿠폰 시스템을 개발하며 개선을 위한 요구사항 외 고려했던 것들
프로젝트 내용 : 도서 판매 사이트를 구축하며 체계적으로 웹사이트 개발하여 배포.
인력 구성 : Full-Stack 5명 (기여도 : 20%)
- 아키텍처
· MSA에서 서버 간의 Session 유지와 캐싱을 위한 Redis
· NGINX의 L4를 이용한 Front Server 로드 밸런싱
· 무중단 스케일 아웃을 위한 Spring Cloud Gateway Eureka · 접속이 적은 시간에 안정적인 스케줄링을 위한 Spring Batch
- 메인 업무
· 관리자는 생일쿠폰을 등록, 미등록시 정의된 규칙으로 Batch에서 발급 · 쿠폰은 만료일 00시에 만료(Batch)
· Front Server CI / CD(GithubActions)
· 쿠폰은 매크로 사용이 불가능한 방법에 대한 연구.(UUID를 PK로...)
- 발생 문제
· MySQL에서 정렬되지 않은 값을 PK(UUID)로 사용하여 INSERT 할 시 InnoDB 스토리지 엔진인 클러스터형 인덱스로 인해 성능 문제 발생.
- 문제 해결
· 쿠폰을 정의하는 테이블과 실제로 발급되는 테이블을 분리하여 UUID를 사용하는 PK의 INSERT를 대규모로 낮춤.
- 회고
· 처음부터 쿠폰을 발급된 상태로 MQ를 이용하여 쿠폰을 지급하는 방식을 사용했다면 더 좋은 결과를 낼 수 있지 않았을까? 등
여러 고민을 여전히 하고 있습니다.
포트폴리오
교육
NHN Academy
사설 교육 | Java Backend
2023.08. ~ 2024.03. | 졸업
대구가톨릭대학교
대학교(학사) | 사이버보안전공
2018.03. ~ 2024.02. | 졸업
대구가톨릭대학교
대학교(학사) | 컴퓨터공학전공
2018.03. ~ 2024.02. | 졸업
경북기계공업고등학교
고등학교 | 공업전자(마이스터)
2014.03. ~ 2017.02. | 졸업
자격증
전자계산기기능사
- | 한국산업인력공단
2015.06.
전자캐드기능사
- | 한국산업인력공단
2015.12.
전자기능사
- | 한국산업인력공단
2016.07.
CPPF(개인정보취급사)
- | 한국CPO포럼
2023.05.
자기소개
[상상을 개발로, 배움은 즐거움으로부터, 배움에 위치는 없다]
중학교 시절, 저는 진로를 정할 수 있게 된 은사님을 만나게 되었습니다. 정보 선생님께서는 정규 과정인 스크래치를 배우는 대신 C언어를 가르쳐주셨는데, C언어를 배우며 컴퓨터로 내 머릿속의 생각을 표현할 수 있다는 아이디어에 빠져들게 되었습니다.
대학 진학 후, 우연히 KISA에서 지원하는 소프트웨어 동아리에 개발파트로 가입하게 되었습니다. 동아리의 좌우명인 “배운 만큼 가르쳐주자”를 실현하기 위하여 동아리 내에서 교육, 팀 프로젝트, 멘토링 활동 등에 적극적으로 참여하면서 많은 경험을 쌓았습니다. 그 결과, 2021년 2학기부터 1년간 동아리 회장을 맡게 되었습니다.
회장이 된 제 목표는 평상시 제 신념을 동아리 분위기로 녹여내는 것이었습니다.
첫 번째 신념은 “배움은 즐거운 곳에서부터 나온다.”입니다.
제가 회장을 맡게 된 시기는 코로나 시기 말기였습니다. 코로나를 겪는 동안 동아리 분위기는 제 신념과는 맞지 않는 방향으로 흘러가고 있었습니다. 동아리원들 간의 소통과 협력을 촉진하기 위하여 멘토링과 스터디, 공부한 내용 발표회(세미나) 등 다양한 프로그램과 이벤트를 기획하고 진행했습니다. 예를 들어, 격주에 정기적인 세미나를 진행하여 모두의 관심사와 공부하는 방향을 확인하며 같은 방향으로 공부하는 사람들끼리 친해질 수 있는 환경을 만들었고, 제가 공부하고 있는 분야에 관심이 있는 친구들과 스터디 모임 및 멘토링을 개최하여 각자의 의견을 나누고 토론할 수 있는 시간을 마련했습니다. 그 결과, 현재 서로를 잘 알지 못했던 동아리원들이 서로 적극적으로 의견을 제시하게 되었고, 저를 비롯한 다른 선배들에게도 친근하게 다가와 질문을 하며 의견을 나누는 모습으로 보아 꽤 성공적이었다고 평가하고 싶습니다.
두 번째 신념은 “배움은 위치는 없다 .”입니다. 저는 항상 새로운 기술과 도전에 열려있는 개발자로서, 배움은 자신의 위치나 경력에 의해 제한되지 않는다고 믿고 있습니다.
전자공학을 전공하며 시작한 개발자로서, 마이스터고 당시 선배 개발자들의 영향을 크게 받았습니다. 그들은 언제나 새로운 기술을 익히고 적용함으로써 자신의 역량을 향상하는 모습을 보여주었습니다. 심지어 제가 말하는 의견조차 적극적인 자세로 들어주었습니다. 이러한 모습이 저에게 배움은 위치에 구애받지 않으며, 언제나 새로운 것을 배우고자 하는 마음가짐이 중요하다는 것을 가르쳐주었습니다.
저는 Back_End 개발자는 항상 공부하며, 적극적인 자세로 의견을 수용할 수 있어야 한다고 생각합니다. 또한, 저보다 후배 개발자라고 배울 것이 없는 것은 아니기에 열린 마음으로 다가가야 한다고 생각합니다. 이런 제 신념과 함께 Back_End 개발자의 책임을 다할 수 있을 것입니다.
[Back_End 개발을 선택한 이유? 어찌 보면 당연하다!]
제가 Back_End 개발 직무가 되기 위해 노력했던 일 중 2가지만 작성해 보겠습니다.
첫 번째는 Domain Driven Design에 관한 공부입니다.
아무래도 기업은 큰 Domain을 자랑한다고 생각합니다. 이에 저는 Domain에 대해 공부를 시작하였습니다. Domain에 관해 공부한 결과 큰 도메인에서 어떻게 주도적으로 설계하여 개발하면 좋은가에 대해 알 수 있었습니다.
마지막은 프로젝트로 경험한 작은 SCM입니다.
저는 도서판매사이트에서 작은 SCM을 경험한 적이 있습니다. SCM은 가장 대중적이면서도 다양한 기술이 들어가는 프로젝트라고 생각합니다.
프로젝트에 관해 설명해 보자면, SCM의 특성상 언제 고객이 늘어날지 모르기 때문에 언제든지 스케일아웃이 가능하도록 Spring Eureka 적용, 서버 간의 세션 스토리지로 사용하기 위한 Redis와 캐싱을 위한 Redis 등 여러 기술이 들어간 프로젝트였습니다.
그중 제가 맡은 역할은 쿠폰 시스템이라는 SCM 안 있는 작은 시스템이었습니다. 저는 관리자가 작성한 쿠폰 외에도 시간이 되면 발급이 가능하게 되고 만료되는 쿠폰 등을 Spring Batch를 통하여 개발하였습니다. 제가 이 쿠폰 시스템을 만들며 고려했던 것이 있는데 매크로 사용을 막을 수 있는 쿠폰이었습니다. 저는 여러 방법 중 PK를 uuid를 사용하는 방법을 택하였고 그 결과 성능적인 이슈가 생겼습니다. 문제가 된 것은 InnoDB엔진의 특성인 정렬되지 않은 PK 값이었습니다. 저는 또 이를 해결하기 위 테이블을 나누는 방법을 선택하였지만, 지금 와서 생각해 보면 더 좋은 방법들이 생각나고는 합니다.
저는 이러한 경험을 하였고 제가 가진 이 지식과 경험을 펼치고 싶습니다.
[내 성격의 장단점은 열정 또 열정이다]
저는 어렸을 때부터 컴퓨터를 좋아했습니다. 그리고 중학교 때 C언어와 만나 또 다른 세상을 꿈꾸게 되었습니다.
이러한 컴퓨터를 좋아하는 열정이 제가 지원하는 Back_End 개발 직무에서 저를 최고로 만들어 줄 저의 장점이라고 생각합니다.
분명 업무를 하다 보면 해내기 힘든 일도 있을 것입니다.
하지만 저는 그 힘든 일에 대한 결과의 보상을 알고 있습니다. 최고의 보상은 바로 말로 설명 못 할 뿌듯함이라고 생각합니다. 남들이 기피하는 일을 해냈을 때의 뿌듯함은 말로 설명이 부족할 것입니다.
그동안 남들이 맡기 싫어하고 기피하는 일 역시 많이 경험 해봤습니다. 이런 기피하는 일을 해결해 온 과정들이 제가 지금 이 자리에 있는 성장의 밑거름이 되었습니다.
제 단점 역시 열정입니다. 저는 열정이 넘치는 개발자입니다. 때로는 열정이 지나쳐 주변 사람들이 지친 것을 파악하지 못할 때가 있었습니다.
저는 이를 해결하기 위해, 다른 사람의 업무에 관심을 가지게 되었습니다.
실제 여러 프로젝트를 경험하며 다른 사람의 업무에 관심을 가지게 되니 그동안 보이지 않았던 것들이 보이기 시작하였습니다.
관심의 결과가 프로젝트를 파악하고 타인의 업무를 과소평가하지 않게 해주는 바탕이 되었고 또한 프로젝트의 진행도 동료의 어려움 더 나아가 성장에 원동력이 되었습니다.
특히 PM으로 참여한 Dev.OOPS! 프로젝트 같은 경우 초보 개발자분들과 진행하게 되었는데, 실제 계획한 계획서보다 진행도가 낮은 문제가 발생하였습니다.
원인은 경험 부족으로 인한 동료의 어려움이 컸습니다. 하지만 저는 그동안 팀원들의 업무와 능력을 이미 관심에 두고 파악해 두었기 때문에 동료들의 어려움을 빨리 파악할 수 있었고, 문제를 공유하여 같이 해결한 뒤 성공적으로 프로젝트를 마무리할 수 있었습니다.
저의 이러한 관심과 열정을 사용할 준비가 되어있습니다.