포트폴리오상세페이지

황승수

학과

컴퓨터공학부

관심분야

데이터 사이언스, 알고리즘, 컴퓨터네트워크, 데이터베이스

학번

2021****27

자기소개

안녕하세요. S/W를 통해 많은 사람들에게 편리함을 제공하고 싶은 개발자 황승수입니다.

약 6개월 간 AhnLab에서 인턴으로 근무하며, 글로벌 400여 곳의 고객사를 대상으로 패치 서비스 제공 및 품질 검증, 테스트 업무를 보조하였습니다. 과정에서 개인 프로젝트 및 팀 프로젝트를 진행하여 업무 자동화와 실서비스 제공 등의 귀중한 경험을 해보았습니다.

컴퓨터공학적 이론을 탐구하는 것을 즐기며, Linux System, 네트워크, 운영체제 및 가상화 기술에 대해 깊은 관심을 갖고 있습니다. 최근에는 마이크로서비스 아키텍쳐 및 IaC, CI/CD에 대한 지식을 탐구하고자 학습을 이어나가고 있습니다.

꾸준히 성장을 이어온 결과 S/W 검정시험 Topcit에서 Class 4를 달성하는 좋은 결과를 이루었으며, 추가적인 자격증에도 도전 중에 있습니다.  

이수교과목

1-1
소프트웨어 원리
미적분학

1-2
IoT 프로그래밍
UX 프로그래밍
이산수학

2-1
객체지향프로그래밍I
디지털 논리회로
컴퓨터 프로그래밍
선형대수학

2-2
자료구조
확률통계
객체지향프로그래밍II
데이터통신
컴퓨터구조

3-1
클라우드컴퓨팅
컴퓨터 알고리즘
데이터베이스
모바일 프로그래밍
운영체제

3-2
네트워크 프로그래밍
리눅스 시스템
소프트웨어 공학
데이터베이스 프로그래밍

4-1
ICT 인턴십

사용가능기술

언어
Java / Kotlin
Python
Javascript

프레임워크
Spring Framework (현업 적용 가능)
FastAPI (현업 적용 가능)
React (가벼운 웹 프로토타입 구현 가능)

DB
MySQL, PostgreSQL
Redis, MongoDB

Infra
Docker, Kubernetes, Jenkins  

수행 프로젝트

 

Compress Package (2024.01 ~ 2024.06, 사내 프로젝트, 4명)

[개발 환경]

Infrastucture: Jenkins, Docker, Kubernetes
Backend: Python, FastAPI, Redis, PostgreSQL, Celery, Nginx
Frontend: TypeScript, React, tailwindcss, Recoil, React-Query

 

[프로젝트 소개]

AhnLab 인턴 재직 기간동안 Backend 개발을 담당한 프로젝트로, 전국 ATM 및 글로벌 400여 곳의 폐쇄망 환경의 고객사를 대상으로 온라인 패치 서비스를 제공하기 위한 사내 프로젝트입니다.

최근 특정 벤더사에서는 보안/비보안 패치를 제공하는 과정에서 온라인 환경을 요구하고 있습니다. 하지만 대부분의 비즈니스 환경에서는 보안상 Network를 개방하지 못하기 때문에, 특정 S/W 버전에 CVE 보안 결함이 발견되어도 이를 업데이트하지 못하는 문제점이 발생합니다. 따라서 온라인 패치셋을 오프라인 환경에서도 설치할 수 있도록 사전 패키징 작업을 거친 후 고객사에 배포해야 할 필요성이 생기게 되었습니다.

기존 패키징 과정에서는 벤더사 서버 및 사내 전자서명 서버, KisaSeed 암/복호화 모듈 등 수많은 의존 관계가 존재하였고, 관리자가 각 과정을 개별적으로 처리했기 때문에 복잡성에 대한 문제가 있었습니다. 따라서 위와 같은 패키징 과정을 일괄적으로 통합하여 쉽고 간단하게 작업을 진행할 수 있는 작업 서버 및 웹 기반의 관리 콘솔을 개발하는 프로젝트가 기획되었습니다.

 

[담당 역할]

해당 프로젝트에서 패키징 기능 구현을 담당하였습니다. 총 10단계로 구성된 패키징 작업은 분산 환경에서 병렬적으로 처리되며 이를 통해 순차적인 처리 대비 작업 속도를 2배 이상 증가시켰습니다.

또한 작업 특성상 I/O Bound 비중이 높았기 때문에 비동기 처리를 쉽고 간결하게 제공하는 FastAPI 프레임워크를 선택하였고, Redis와 Celery를 연동하여 Task를 비동기적으로 처리할 수 있도록 설계하였습니다. 이를 통해 WAS에 가해지는 부하량을 상당 부분 감소시키고, Blocking 구간을 최소화하여 사용자 경험을 향상시킬 수 있었습니다.

이외에도 과정에서 다음과 같은 사항을 통해 패키징 기능을 구현하였습니다.

1. 멀티 프로세스 환경에서 Race Condition을 방지하기 위해 분산락 기능을 구현하였습니다.

2. KisaSeed 모듈을 이용하여 중요 정보의 암/복호화 기능을 구현하였습니다.

3. 작업 결과 파일을 제공함에 있어서 약 4~5GB의 네트워크 전송을 필요로 했기 때문에 Reverse Proxy Server를 두어 정적 파일의 제공을 담당하게 하였습니다.

4. 각 단계별로 상태값을 두고 Frontend에서 Polling하는 방식으로 실시간 작업 현황을 볼 수 있게 구성하였습니다. 또한 각 단계에서 예외 발생 시 Rollback 및 자동 재시도 기능을 구현하여 작업의 완성률을 끌어올렸습니다.

 

[리뷰]

해당 서비스를 실제 업무에서 사용하고 있는 관리자 분의 피드백에 따르면, "전체 패키징 과정이 정보 입력 및 클릭 한 번으로 통합되어 작업 효율이 증가하였고, 과거 히스토리도 쉽게 추적하고 관리할 수 있어서 만족스럽다"고 평가해 주셨습니다.

현재 Compress Package 서비스를 통해 패키징된 온라인 패치셋은 오프라인 패치셋과 함께 자사 PMS(Patch Management Service) S/W를 통해 매월 고객사로 배포되며, 보안 결함이 발견된 S/W의 최신 패치 업데이트를 신속하게 지원하여 고객사의 니즈를 만족시키는 데 기여하고 있습니다.

 

 

 

 

pscraper https://github.com/pscraper/pscraper (2024.02 ~ 2024.03, 개인 프로젝트)

[개발 환경]

Python, Selenium

 

[프로젝트 소개]

MS, Adobe 등 각종 벤더사의 패치 릴리즈 정보를 자동 수집/등록하는 툴을 개발하였습니다. 해당 프로젝트는 데이터 및 파일 수집, 검증, 가공 및 엑셀 정리의 전체 과정을 100% 자동화시킨 selenium 기반의 스크래핑 툴로, 기존 수동 작업 대비 작업 시간을 절반 이하로 단축시키고 과정에서 발생할 수 있는 휴먼에러를 원천 차단하여 업무 효율성을 향상시키는 데 기여하였습니다.

 

[설계]

수집, 검증, 가공, 엑셀 관리, 로깅 등 기능별 모듈화를 통해 모듈 간 낮은 결합력과 높은 응집력을 갖도록 설계하였습니다. 각각의 책임을 명확히 분리해두었기 때문에 디버깅 및 새로운 수집 대상을 추가함에 있어서도 기존 코드를 거의 수정하지 않고 확장이 가능합니다. 전체 기능은 각 모듈들이 파이프라인을 이루어 동작하며 데이터는 수집 -> 검증 -> 가공 -> 엑셀 등록의 형태로 흘러갑니다.

 

[기타]

1. 사용자 편의를 위해 CLI 실행 및 Binary 실행 파일을 모두 지원합니다. 세부적인 옵션을 지정하기 위해서는 CLI 사용이 우선되지만, 단순 사용을 위해서는 Binary 파일 클릭 한번이면 충분합니다.

2. 실행 단위 별로 log 파일 및 수집 결과 파일을 제공하여, 자동화 과정에서 모니터링을 하지 않아도 정상적으로 작동이 완료되었는지 추후 확인이 가능합니다.
  • 담당부서
    소프트웨어 중심대학
  • 전화번호
    02-3399-3633
최종수정일 : 2024년 06월 10일