채용공고 올리기

박우영님을 응원해보세요!

이직/구직 중이에요

미리보기

직업
Backend Engineer
이름
박우영
이메일
wooyeong1998@gmail.com
간단소개
[About Me] 문제를 다양한 관점에서 분석하고 최적의 해결책을 모색하는 개발자입니다. 리소스를 효율적으로 활용하며, 협업을 통해 함께 성장하는 것을 중요하게 생각합니다. 1. 문제 해결을 위한 다각적 접근 - HTTP의 stateless 특성을 고려해 로그인 방식으로 세션과 토큰을 비교 분석한 후, 확장성과 보안성을 고려해 토큰 방식을 선택했습니다. - DB 조회 성능 문제를 해결하기 위해 MySQL 파티션 적용, 캐싱 활용, 일정 기간 후 삭제 방식 등을 비교 분석하여 최적의 방법을 적용했습니다. 2. 중복 최소화 및 가독성을 고려한 코드 작성 - 정규화(2NF, 3NF)를 통해 데이터 중복을 줄이고, 필요 시 반정규화를 적용해 성능과 가독성을 균형 있게 유지했습니다. - 소셜 로그인 구현 시 전략 패턴과 팩토리 패턴을 활용하여 공통 로직을 추상화하고 유지보수성을 높였습니다. 3. 지식 구조화 및 공유를 통한 성장 - 50편 이상의 기술 포스팅을 작성하며 개념을 정리하고, 이를 팀원들과 공유하며 협업을 강화했습니다. - 지식을 설명하는 과정에서 더욱 깊이 이해하게 되었고, 코드 리뷰와 문서화를 통해 원활한 협업을 이끌었습니다.

경력

회사명
주식회사위지온
직책 • 부서
선임 • 개발운영실
근무 기간 (근무 형태)
2025.01. - 재직 중
(5개월 | 정규직)
담당 업무

그린에너지 솔루션 프로젝트 (유지보수)

  • 충전기 전문 통신 유지보수: Netty 및 Apache MINA를 활용한 고성능 전문 통신 처리

  • 관리 페이지 유지보수: 시스템 안정성 확보 및 기능 개선을 위한 유지보수 작업 수행

IREAH 프로젝트

  • 전문 통신 서버 개발: Netty 기반 자체 전문 통신 서버 설계 및 구현

  • 인프라 구성: 안정적인 서비스 운영을 위한 인프라 구축 및 최적화

PG 솔루션 프로젝트 (유지보수)

  • 결제 시스템 인프라 유지보수: 원활한 서비스 제공을 위한 서버 및 네트워크 환경 관리

  • 시스템 안정성 개선: 인프라 모니터링 및 최적화를 통한 운영 효율성 향상

회사명
㈜지란지교에스앤씨
직책 • 부서
사원/팀원 • 보안기술연구소
근무 기간 (근무 형태)
2023.03. - 2024.05.
(1년 3개월 | 정규직)
담당 업무
  • 취약점자동점검솔루션 VADA (Agent 개발팀)

    • VADA의 경우 Agent를 이용해서 서버의 취약점을 분석한 이후 Manager(웹서버)를 통해 사용자에게 제공

    • 주요정보통신기반시설 기술적 취약점 분석(KISA)의 기준을 바탕으로 항목 고도화 진행

    • 클라우드 플랫폼(AWS, AZURE, GCP) 취약점 진단 자산 추가

프로젝트

프로젝트명
Onz (칵테일 커뮤니티 서비스)
소속/기관명
팀프로젝트
프로젝트 기간
2025.01. - 진행 중
(5개월)
프로젝트 설명
  • Description:
    칵테일에 대한 부족한 정보 접근성을 원활히 하고자 기획한 프로젝트로, 다양한 칵테일 정보를 쉽게 검색하고 활용할 수 있는 애플리케이션 개발.

  • Experience:

    • 백엔드 개발: RESTful API 기반으로 설계 및 구현

    • 인증 및 보안:

      • Spring Security를 활용하여 자체 토큰(Access Token + Refresh Token) 발급 및 관리

      • 외부 인가 서비스(Google, Naver, Kakao) 연동을 고려한 확장성 있는 설계

    • 성능 최적화:

      • 정적 데이터 및 초기 데이터 캐싱을 통해 빠른 응답 속도 제공

      • 데이터 중복 최소화를 위한 정규화 진행

    • 유효성 검사 및 예외 처리:

      • AOP를 활용한 유효성 검사 적용

      • ControllerAdvice를 이용한 공통 Exception 처리 도입

    • 배포 및 운영:

      • Docker를 활용하여 Application 및 DB 컨테이너화하여 빠른 설치 및 배포

      • Github Actions를 이용한 CI/CD 파이프라인 구축

프로젝트명
Movie (영화예매 프로젝트)
소속/기관명
팀 프로젝트
프로젝트 기간
2024.11. - 2024.12.
(2개월)
프로젝트 설명
  • Description

    • 영화예매플랫폼의 통합을 통해 편리한 사용자의 예매를 서비스하기 위해 개발

  • Experience

    • 앱 또는 웹과의 협업을 위해서 백엔드 구성을 Restful API로 구현

    • GCP서버를 이용하여 DB(MySQL)와 웹서버(Spring) CI/CD(Jenkins)를 이용하여 배포 구성

    • PG사 연동을 통해 결제구축 및 웹페이지에서 가격 조작 방지를 위해서 서버 가격 검증 구현

    • Spring Security를 이용하여, JWT 단일 토큰을 초기 구현 이후 안정성을 위해서 RefreshToken을 도입

    • 결제 전 더미데이터를 해결하기 위해, Redis를 도입해 결제 중 데이터를 메모리에 저장 후 결제 완료시 DB저장

    • 장바구니&결제 비즈니스로직 구현

프로젝트명
VADA (취약점 자동점검 솔루션)
소속/기관명
지란지교SNC
프로젝트 기간
2023.03. - 2024.05.
(1년 3개월)
프로젝트 설명
  • Description

    • 취약점 자동점검 솔루션 Agent 개발 및 유지보수 진행

  • Experience

    • 주요 정보통신 기반시설 취약점 수집 및 분석 Agent 개발

      • 주기적으로 변경되는 주요 정보통신 기반 시설 취약점 항목에 관한 추가 및 수정진행

        • 진단 수행 시간을 단축하고 서버 서비스 중단을 방지하기 위해 타임아웃 기능 구현

        • Aruba 네트워크 취약점관련 항목 개발

        • OS 취약점 관련 항목 개발

      • Agent 배포를 위한 빌드 및 배포 진행

        • Linux 및 Unix 개발 서버에 배포하기 위한 빌드 과정 최적화 스크립트 작성

      • 부모-자식 프로세스를 통해 항목별 진단에 필요한 자식 프로세스를 사용하면서 wait() 함수 부재로 발생한 좀비 프로세스 문제 해결

      • 정규 표현식을 사용하여 사용자/그룹/다른 사용자 권한을 확인해야 했지만, 이를 한꺼번에 숫자로 처리하는 문제 해결

    • 클라우드 플랫폼 취약점 수집 및 분석 Agent 개발

      • 기존 VADA 아키텍처 유지

        • 유지보수 및 VADA 솔루션에 통합 용이성 고려

      • AWS, GCP, Azure 등의 클라우드 플랫폼에서 취약점 수집 및 분석 기능 개발

        • 클라우드 플랫폼의 API를 활용하여 취약점 수집 및 분석 기능 개발

      • 서버 대상이 아니므로, 리눅스 및 윈도우 프로그램으로 배포 진행

        • Python을 사용하여 배포 편의성을 높이고, 다양한 라이브러리를 통한 빠른 개발 진행

프로젝트명
Servlet-Filter
소속/기관명
개인
프로젝트 기간
2024.10. - 2024.11.
(2개월)
프로젝트 설명
  • 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의 요청-응답 흐름을 직접 구현해 보며 그 차이점을 분석

포트폴리오

타입
URL
티스토리
link
기술 블로그
깃허브
link
Onz (칵테일 서비스)
깃허브
link
Moive 프로젝트
깃허브
link
Filter의 이해 (로그인 + 게시판)
깃허브
link
Dispatch Servlet의 이해

기술 스택

기술 스택
Java
Spring
Spring Security
JPA
DBMS/RDBMS
C
Python

자격증

자격증명
컴퓨터활용능력
점수/급 | 발급 기관
1급 | 대한상공회의소
취득월
2021.08
자격증명
네트워크관리사
점수/급 | 발급 기관
2급 | 한국정보통신자격협회
취득월
2018.12
자격증명
SQL개발자(SQLD자격)
점수/급 | 발급 기관
SQLD | 한국데이터베이스진흥센터
취득월
2023.05
자격증명
정보처리기사
점수/급 | 발급 기관
기사 | 한국산업인력공단
취득월
2023.06

자기소개

자기소개

1. 문제 해결 방식

저는 개발자의 역할이 요구사항을 명확히 정의하고, 이를 해결하기 위한 기술과 기능을 최적의 방법으로 구현하는 것이라 생각합니다. 따라서, 요구사항을 깊이 분석한 후, 주어진 환경과 리소스 내에서 가장 효율적인 해결책을 고민하며 개발을 진행합니다.

요구사항이 제대로 정리되지 않으면 무분별한 개발과 불필요한 코드 증가로 이어질 가능성이 크기에, 개발 초기 단계에서부터 명확한 설계와 모듈화를 중요하게 고려합니다. 또한, 요구사항을 충족시키는 최적의 기술을 다각적으로 검토하고 선택하여, 유지보수성과 확장성을 확보하는 것을 목표로 합니다.

로그인 시스템 설계: 보안성과 확장성을 고려한 접근

프로젝트 진행 중, HTTP 프로토콜의 Stateless 특성을 고려하여 로그인 정보를 저장하는 방식을 고민했습니다. 세션 기반 방식과 토큰 기반 방식을 비교 분석한 결과, 프로젝트의 커뮤니티 특성과 제한된 서버 리소스를 고려해 확장성이 유리한 JWT 기반 토큰 방식을 선택했습니다.
그러나, 토큰 방식은 클라이언트가 많은 권한을 가지는 만큼 보안에 취약할 수 있기에, 이를 보완하기 위해 Refresh Token을 도입하여 보안성을 강화했습니다.

DB 조회 성능 최적화: 데이터 중요도를 고려한 효율적 설계

DB 조회 속도 문제를 해결하기 위해, 먼저 데이터의 성격과 중요도를 분석했습니다. 해당 프로젝트에서는 일정 주기로 상태를 저장하는 데이터가 한 테이블에 쌓이면서 조회 성능이 저하되는 문제가 있었습니다.
이를 해결하기 위해, 긴급한 상태에서만 데이터를 저장하는 방식을 제안했으나, 모니터링 특성상 실시간 조회가 필요하다는 기획자의 의견을 반영하여 MySQL 파티션 기능을 활용하기로 결정했습니다.
단순히 인덱스를 추가하는 방식도 고려했으나, 주기적인 삽입으로 인해 인덱스 효율성이 저하될 가능성이 높다고 판단했습니다. 따라서, 데이터를 기간별로 분리하여 자주 조회되지 않는 데이터는 범위 기반으로 파티션을 나누고, 일정 기간이 지나면 삭제하는 구조로 설계했습니다.
그 결과, 약 60%의 성능 향상을 이끌어냈으며, 조회 속도를 획기적으로 개선할 수 있었습니다.

코드 최적화 및 유지보수성 강화

저는 중복된 코드를 최소화하고, 모듈화를 통해 객체지향의 장점을 살리는 코드 최적화를 중요하게 생각합니다.

  • DB 정규화 및 반정규화 적용
    한 테이블에 데이터를 모을 수 있는 경우라도, 기본키와 연관성이 없는 중복 데이터는 정규화(2NF, 3NF)를 진행하여 데이터 무결성을 확보했습니다. 다만, 과도한 정규화는 유지보수성을 저해할 수 있어, 필요에 따라 반정규화를 적용하여 관리 효율성을 높였습니다.

  • 소셜 로그인 시스템: 전략 패턴과 팩토리 패턴 적용
    소셜 로그인 구현 시, 구글, 네이버, 카카오 등 각 인증 서버의 방식은 다르지만, 공통적으로 처리해야 할 부분이 존재했습니다. 이를 해결하기 위해, 전략 패턴과 팩토리 패턴을 적용하여 인증 서버 간 공통 로직을 추상화했습니다.
    이를 통해 코드의 일관성과 재사용성을 높이고, 새로운 인증 방식 추가 시 유지보수성을 극대화할 수 있는 구조를 설계했습니다.

저는 이와 같은 접근 방식을 통해 성능 최적화와 유지보수성을 동시에 고려한 개발을 지향하며, 요구사항을 명확히 분석하여 최적의 기술을 적용하는 개발자로 성장하고 있습니다.


2. 협업 경험 및 커뮤니케이션 능력

개발은 하나의 결과물을 만들어내기 위해 각 분야의 전문성이 모여 시너지를 발휘하는 과정이라고 생각합니다. 팀 프로젝트를 진행하면서, 각자가 맡은 역할을 깊이 고민하고 최선을 다할 때, 혼자 작업할 때보다 더 높은 퀄리티의 결과물과 다양한 문제 해결이 가능하다는 점을 경험했습니다.

명확한 의사소통의 중요성

협업 과정에서 가장 중요하게 느낀 점은 명확한 의사 표현과 근거를 바탕으로 한 소통의 필요성이었습니다.

예를 들어, 프론트엔드와의 API 통신을 설계할 때, 요청값과 응답값을 불필요하게 포함하지 않고 최적화하는 것이 중요했습니다. 이 과정에서,

  • 보안성을 유지하면서도 필요한 정보만 제공하는 이유

  • 통신 데이터 감소와 클라이언트 캐싱을 고려한 응답 설계의 필요성

등을 논리적으로 설명하자, 팀원들도 이에 대해 자연스럽게 수긍하고 원활하게 협업할 수 있었습니다. 또한, 기획자의 기능 설명을 들을 때에도 요구사항의 필요성과 조건을 명확히 질문함으로써 보다 정확한 이해가 가능해졌습니다.

서로 다른 역할을 이해하는 커뮤니케이션 방식

다양한 분야의 사람들이 협업하는 과정에서, 자신에게 익숙한 개념이 상대방에게는 낯설 수 있다는 점을 인식하는 것이 중요하다는 것을 깨달았습니다.

기획자는 코딩을 직접 할 수는 없어도 구현의 논리적 순서를 이해할 수 있기 때문에, 원하는 기능이 어떤 방식으로 개발되는지 설명하면 더욱 원활한 소통이 가능했습니다. 또한, 추가 기능이 기존 로직에 포함될 수 있는지, 아니면 전면적인 변경이 필요한지를 명확히 전달하여 개발 일정 산정에도 도움을 줄 수 있었습니다.

이러한 경험을 통해, 저는 기승전결이 명확한 설명 방식과 상대방의 이해도를 고려한 커뮤니케이션이 협업의 핵심 요소라는 것을 배웠습니다. 앞으로도 팀원들과 원활하게 소통하며 효율적인 협업을 이끌어나가는 개발자로 성장하고 싶습니다.


3. 입사 후 포부

저는 새로운 기술을 빠르게 습득하고, 실무에서 즉시 적용할 수 있도록 성장하는 개발자가 되고자 합니다.

기술과 기능은 결국 컴퓨터라는 하나의 모체에서 파생된 개념이며, 프로그래밍 언어나 기술 스택은 큰 틀에서 유사한 원리를 기반으로 동작한다고 생각합니다. 많은 사람들이 말하듯, 언어와 기술은 도구일 뿐이며, 능숙하지 않더라도 충분히 익히고 활용할 수 있는 능력이 중요합니다.

JAVA를 배운 지 오래되지 않았지만, C언어 경험을 바탕으로 빠르게 적응할 수 있었고, 내부 메커니즘과 처리 방식이 크게 다르지 않다는 것을 깨달았습니다. 이러한 사고방식을 통해 새로운 기술을 습득하는 데 많은 시간이 걸리지 않는다고 자신하며, 앞으로도 필요한 기술 스택을 능동적으로 학습하고, 실무에 적용할 수 있는 역량을 지속적으로 키워나갈 것입니다.

또한, 팀 프로젝트를 경험하면서 개발에 대한 열정을 가진 뛰어난 개발자들과 함께 일하는 것이 저의 목표입니다. 단순히 혼자 성장하는 것이 아니라, 서로의 지식을 공유하며 함께 성장하고, 다양한 직무와 협업하며 더 나은 서비스를 만드는 것이 제가 원하는 방향입니다.

입사 후에도 끊임없이 공부하며 변화에 유연하게 적응하는 개발자가 되겠습니다. 카멜레온처럼 새로운 환경에서도 빠르게 흡수하고 적응하며, 팀과 함께 성장하여 좋은 서비스에 기여하는 것이 저의 최종 목표입니다.

교육

소속/기관
전북대학교
종류 | 전공명/전공계열
대학교(학사) | 도시공학과(주전공)/ 컴퓨터공학(부전공)
재학 기간 (재학 상태)
2018.03. - 2023.08. (졸업)
댓글