미리보기
기본 정보
[About Me] “문제를 깊이 이해하고, 효율적으로 해결하며, 함께 성장하는 개발자” 1. 문제를 정의하고 근본적으로 해결하려는 집요함이 있습니다. - JWT 단일 토큰 사용의 보안 취약점을 개선하기 위해 Refresh Token과 세션 관리를 도입하여 더 안전한 인증 방식을 설계했습니다. - 결제 데이터의 더미 데이터 문제를 해결하기 위해 Redis를 활용해 결제 중 데이터를 메모리에 저장하고, 완료 시 RDBMS에 반영하는 구조를 설계해 성능을 최적화했습니다. 2. 기술의 동작 원리를 이해하고 활용합니다. - Spring의 요청-응답 흐름을 이해하기 위해 Dispatcher Servlet을 구현하며 데이터 처리 과정을 직접 경험했습니다. 3. 지식을 구조화하고, 공유하며 협업을 이끕니다. - 50편 이상의 기술 포스팅을 통해 이해한 개념을 팀원들에게 공유하여 소통과 협업을 원활히 했습니다. - 팀 프로젝트에서 역할 분담 갈등을 해결하며 팀워크를 강화하고 목표를 성공적으로 달성한 경험도 있습니다.
경력
㈜지란지교에스앤씨
사원/팀원 • 보안기술연구소
취약점자동점검솔루션 VADA (Agent 개발팀)
VADA의 경우 Agent를 이용해서 서버의 취약점을 분석한 이후 Manager(웹서버)를 통해 사용자에게 제공
주요정보통신기반시설 기술적 취약점 분석(KISA)의 기준을 바탕으로 항목 고도화 진행
클라우드 플랫폼(AWS, AZURE, GCP) 취약점 진단 자산 추가
(1년 3개월 | 정규직)
프로젝트
지란지교SNC
VADA (취약점 자동점검 솔루션)
Description
취약점 자동점검 솔루션 Agent 개발 및 유지보수 진행
Experience
주요 정보통신 기반시설 취약점 수집 및 분석 Agent 개발
주기적으로 변경되는 주요 정보통신 기반 시설 취약점 항목에 관한 추가 및 수정진행
진단 수행 시간을 단축하고 서버 서비스 중단을 방지하기 위해 타임아웃 기능 구현
Aruba 네트워크 취약점관련 항목 개발
OS 취약점 관련 항목 개발
Agent 배포를 위한 빌드 및 배포 진행
Linux 및 Unix 개발 서버에 배포하기 위한 빌드 과정 최적화 스크립트 작성
부모-자식 프로세스를 통해 항목별 진단에 필요한 자식 프로세스를 사용하면서 wait() 함수 부재로 발생한 좀비 프로세스 문제 해결
정규 표현식을 사용하여 사용자/그룹/다른 사용자 권한을 확인해야 했지만, 이를 한꺼번에 숫자로 처리하는 문제 해결
클라우드 플랫폼 취약점 수집 및 분석 Agent 개발
기존 VADA 아키텍처 유지
유지보수 및 VADA 솔루션에 통합 용이성 고려
AWS, GCP, Azure 등의 클라우드 플랫폼에서 취약점 수집 및 분석 기능 개발
클라우드 플랫폼의 API를 활용하여 취약점 수집 및 분석 기능 개발
서버 대상이 아니므로, 리눅스 및 윈도우 프로그램으로 배포 진행
Python을 사용하여 배포 편의성을 높이고, 다양한 라이브러리를 통한 빠른 개발 진행
팀 프로젝트
Movie (영화예매 프로젝트)
Description
영화예매플랫폼의 통합을 통해 편리한 사용자의 예매를 서비스하기 위해 개발
Experience
앱 또는 웹과의 협업을 위해서 백엔드 구성을 Restful API로 구현
GCP서버를 이용하여 DB(MySQL)와 웹서버(Spring) CI/CD(Jenkins)를 이용하여 배포 구성
PG사 연동을 통해 결제구축 및 웹페이지에서 가격 조작 방지를 위해서 서버 가격 검증 구현
Spring Security를 이용하여, JWT 단일 토큰을 초기 구현 이후 안정성을 위해서 RefreshToken을 도입
결제 전 더미데이터를 해결하기 위해, Redis를 도입해 결제 중 데이터를 메모리에 저장 후 결제 완료시 DB저장
장바구니&결제 비즈니스로직 구현
개인
Servlet-Filter
Description
Spring (+Spring Security) 의 동작원리의 이해를 위한 개인 프로젝트 진행
Experience
Filter를 직접 구현하여 요청과 Java Servlet 간의 필터링 과정을 통해 요청 처리 방식을 이해
Filter의 처리 원리를 이해하기 위해 로그인 필터를 구현
Filter와 Spring Interceptor의 처리 차이를 비교하여 그 동작 방식을 이해
Dispatcher Servlet을 직접 구현
Dispatcher Servlet과 유사한 인터페이스를 만들어 원하는 Controller로 요청을 매핑
Spring의 Adapter 구조와 ViewResolver, Dispatcher Handler를 구현하여 Spring의 동작 원리를 종합적으로 파악
Java Servlet과 Spring의 요청-응답 흐름을 직접 구현해 보며 그 차이점을 분석
포트폴리오
기술 스택
자격증
컴퓨터활용능력
1급 | 대한상공회의소
2021.08.
네트워크관리사
2급 | 한국정보통신자격협회
2018.12.
SQL개발자(SQLD자격)
SQLD | 한국데이터베이스진흥센터
2023.05.
정보처리기사
기사 | 한국산업인력공단
2023.06.
자기소개
1. 성격 및 강점
첫째로, 저는 문제를 깊이 이해하고 효율적으로 해결하는 데 집중하는 개발자입니다. 항상 기술의 동작 원리를 궁금해하며, 이를 통해 더 나은 설계를 고민합니다. 프로젝트 진행시 JWT를 이용한 로그인을 구현할 때, 단일 토큰으로 되어있던 로그인의 보안 취약점을 개선하기 위해 Refresh Token과 세션 관리를 도입하여 더 안전한 인증 방식을 설계했습니다.
둘째로, 업무에서 효율성을 높이기 위해 자동화를 적극 활용합니다. 반복적인 작업을 개선하기 위해 매크로 프로그램을 개발하거나, 영업일 계산기를 만들어 업무 시간을 단축시킨 경험이 있습니다. 자동화는 시간을 절약하는 데 그치지 않고, 업무의 정확성을 높이는 데도 기여하며, 효율적인 업무 진행을 도왔습니다.
마지막으로, 프로젝트를 진행하며 상황에 맞는 최적의 선택을 내리기 위해 끊임없이 고민합니다. 예를 들어, 팀 프로젝트에서 배포 방식에 대해 WAR 파일과 JAR 파일 중 어떤 것을 사용할지 논의했습니다. WAR 파일은 여러 웹 애플리케이션을 한 서버에 배포할 수 있는 장점이 있었지만, 단일 애플리케이션으로 충분한 상황에서는 JAR 파일이 더 적합하다고 판단해 이를 채택했습니다. 이러한 선택으로 비교적 간편한 배포과정으로 서버구축하는데에 시간을 절약할 수 있었습니다.
이러한 성향을 바탕으로 기술적 이해를 통해 효율성을 극대화하고, 문제 해결에 집중하는 개발자로서, 앞으로도 지속적으로 더 나은 결과를 창출하는 데 기여하고자 합니다.
2. 협업 경험 및 커뮤니케이션 능력
팀 프로젝트에서 백엔드 개발자 3명과 프론트엔드 개발자 1명으로 구성된 상황에서 발생한 갈등을 해결했던 경험이 있습니다. 한 백엔드 개발자가 팀 구성에 대한 걱정을 표현하며, 프론트엔드 개발자가 혼자서 모든 작업을 감당해야 하는 상황을 우려했지만, 이 발언이 프론트엔드 개발자의 실력을 의심하는 것으로 오해를사면서 팀 내 갈등이 생겼습니다. 이를 인지한 저는 프론트엔드 개발자와 직접 소통하며 발언의 의도를 명확히 설명했고, 팀원의 진심을 전달하여 오해를 풀고 신뢰를 회복할 수 있었습니다. 이 경험은 상황을 빠르게 파악하고 갈등을 해결하는 커뮤니케이션 능력의 중요성을 일깨워주었으며, 이를 통해 팀워크를 강화하는 계기가 되었습니다.
협업에 대한 또다른 경험으로, 프로젝트를 진행하며 서로의 관심사가 겹치는 상황에서도 협업을 통해 더 나은 결과를 도출했던 경험이 있습니다. 로그인 기능 개발에서 저는 Spring Security를 활용하고 싶었고, 마침 다른 팀원도 같은 기술을 적용하고 싶어 했습니다. 함께 개발하기로 정하고 정보를 공유하며 함께 연구했고, 각자의 관점에서 해결책을 제시하며 더 깊이 있는 결과를 만들어낼 수 있었습니다. 이 과정에서 협업의 가치를 다시 한번 깨닫게 되었습니다.
저는 이러한 경험을 바탕으로, 팀원들과 적극적으로 소통하며 서로의 의견을 조율하고, 협력하는 과정에서 더 나은 결과를 만들어가는 개발자가 되고자 합니다.
긍정적인 팀 분위기를 조성하고 협업의 시너지를 극대화하는 데 기여할 자신이 있습니다.
3. 입사 후 포부
저는 C언어를 사용하던 경험을 바탕으로 JAVA로의 전환을 빠르게 이뤄냈으며, 새로운 프레임워크 또한 신속하게 습득할 수 있었습니다. 이러한 속도는 기술이나 도구의 동작 원리를 이해하는 데 중점을 두었기 때문입니다. 이는 다른 기술을 접하더라도 그 동작 원리를 기반으로 빠르게 적응하고 활용할 수 있는 능력으로 이어졌습니다. 향후 새로운 기술과 도구를 배우는 과정에서도 이와 같은 접근법을 통해 효율적으로 습득하고, 실무에서 빠르게 적용할 수 있을 것입니다.
또한, 협업을 통해 혼자서 개발하던 것보다 훨씬 더 빠르고 정확한 결과를 도출할 수 있음을 깨달았습니다. 예를 들어, 팀 프로젝트에서 JWT 인증 시스템을 구현할 때, 여러 팀원과 협력하며 다양한 아이디어와 피드백을 통해 보안성과 성능을 동시에 개선할 수 있었습니다. 혼자서는 생각하지 못한 부분을 팀원들과의 논의를 통해 해결하며, 기술적 성장뿐만 아니라 소통의 중요성도 크게 느꼈습니다. 협업을 통해 개발의 재미를 느끼고, 더 나은 결과를 만들 수 있다는 것을 경험했으며, 앞으로도 팀워크를 기반으로 더욱 발전하는 개발자가 되고자 합니다.
교육
전북대학교
대학교(학사) | 도시공학과(주전공)/ 컴퓨터공학(부전공)
2018.03. ~ 2023.08.
졸업