채용공고 올리기

장수현님을 응원해보세요!

지금 만족하고 있어요
협업 지향
커뮤니케이션
문제 해결사

미리보기

직업
Backend Developer
이름
장수현
이메일
honan24@naver.com
간단소개

경력

회사명
(주)센티널테크놀로지
직책 • 부서
연구원 • 기술연구소
근무 기간 (근무 형태)
2019.10. - 2024.11.
(5년 2개월 | 정규직)
담당 업무

업무 경험

민간 및 공공기관 대상 개인정보 관련 솔루션 개발사로, 홈페이지 내 개인정보 솔루션(CPMS)서버 내 개인정보 점검 솔루션(Coolcheck for Server)을 개발했습니다.

두 솔루션의 메인 개발자로서, 프로젝트 수립부터 개발 QA까지 관리하여 솔루션 완성도를 높이는 데에 기여하였습니다.

또한, 업무관리시스템 운영과 유지보수, Git 도입, 업무 자동화, 인트라넷 관리 등 다양한 업무를 수행하여 동료들의 업무 효율을 높이고 협업할 수 있는 환경을 조성하기 위해 노력했습니다.


업무 프로젝트

업무관리시스템 / 검색 기능 Slow Query 개선(조회 시간 83% 단축)

2022.05 ~ 2022.05

문제

  • 검색 기능 쿼리의 다중 테이블 JOIN과 LIKE절 조건으로 인한 2.9sec의 느린 조회 성능

해결

  • 사용자(직원)의 검색 키워드 분포 조사 후, 카테고리별 검색 쿼리 분리를 통한 조회 성능 개선(2.9sec -> 0.5sec, 83% 단축)

결과 및 회고

  • 직원용 시스템이기 때문에 조사 작업이 수월했으며, 직원들의 업무 효율성 상승에 기여

개발 환경

  • 언어: Java 17, JavaScript

  • 프레임워크: Spring(eGovFrame) 3

  • 데이터베이스: MySQL 8

업무관리시스템 / 페이지 출력 Slow Query 개선(출력 시간 36% 단축)

2022.03 ~ 2022.03

문제

  • 시스템 메인의 연관 페이지(6개)를 로드할 때 평균 3.3sec의 페이지 로딩 지연 발생

해결

  • 지연의 원인으로 한 페이지에 5~6개의 쿼리를 호출하고 있었으며, INDEX가 제대로 동작하지 않고 있던 것을 파악

  • 각 쿼리의 실행계획(explain)을 분석하고 JOIN절에서 필요한 내용만 호출하도록 수정했으며, INDEX를 수정하여 평균 로드 시간을 1초 단축(3.3sec -> 2.1sec)

결과 및 회고

  • 2.1sec도 느린 속도이지만, 다른 프로젝트(Ajax 비동기 처리 등)를 통한 추가 개선으로, 사용자 불만 해소 완료

  • 개발 공수를 고려하여 각 페이지별 메인 쿼리 튜닝만 진행했었으나, 여전히 많은 쿼리들의 튜닝이 필요

개발 환경

  • 언어: Java 17, JavaScript

  • 프레임워크: Spring(eGovFrame) 3

  • 데이터베이스: MySQL 8

업무관리시스템 / 운영 및 유지보수

2021.07 ~ 2023.12
  • 시스템 운영과 유지보수 담당으로, 버그(49건) 및 개선(72건) 사항을 처리하여 기술 부채를 해소하고 안정적인 운영 환경 구축에 기여

버그(트러블슈팅)

  • 연별 발행/수금 금액 자동분배 기능 사용 후, 수동으로 금액을 변경 시 Type Error 발생 문제 해결

  • 이전 글 불러오기 기능에서 신규 추가된 카테고리 데이터를 누락하여 가져오는 문제 해결

  • 간헐적인 팝업의 오류(HTTP 500)를 분석해서 타입(Int)의 값 범위 초과 현상을 파악하여, 타입을 수정(long)하여 해결

개선

  • MySQL Cursor를 사용하여 글 목록에서 기관명에 마우스 오버 시, 제품 및 판매개수(완료/진행/보류) 팝업 개발

  • 대시보드의 사이드바 영역 접기 기능과 브라우저 캐시 기능을 통한 사이드바의 상태 저장 기능 개발

개발 환경

  • 언어: Java 17, JavaScript

  • 프레임워크: Spring(eGovFrame) 3

  • 데이터베이스: MySQL 8

개인정보 점검 솔루션 / Grafana 모니터링 대시보드 구축

2024.07 ~ 2024.09

문제

  • 복잡한 비즈니스의 요구사항 반영의 한계와 차트 코드 유지보수의 어려움으로 인한 APM 도입 필요성 발생

해결

  • Prometheus를 활용한 시스템 메트릭 수집과 Grafana를 사용하여 다양한 형태의 데이터 시각화 기능 도입

  • Grafana에 솔루션 데이터를 연동하기 위해 MySQL 쿼리를 프로시저화하여 데이터를 호출하였고, 차트 플러그인을 사용하여 맞춤형 데이터 차트를 지원

  • 시스템 자원 현황(CPU, RAM, Storage, Network, DB 등)을 실시간 모니터링할 수 있게 되었으며, 솔루션 운영 데이터를 다양한 차트와 표로 시각화하여 효과적인 데이터 분석 환경을 제공

결과 및 회고

  • 렌더링된 대시보드를 iframe으로 받아와서 대시보드의 로드 시간이 단축되었으며, 쿼리를 프로시저화하여 보안성과 관리성 향상

  • 사용자는 맞춤형 대시보드를 구성하여 시스템과 솔루션의 현황을 실시간으로 확인 가능

  • Prometheus를 사용하여 DB 부하분산과 데이터의 신뢰성과 활용도 향상

개발 환경

  • 언어: PHP 7, JavaScript

  • 프레임워크: CodeIgniter 3, 4

  • 데이터베이스: MySQL 8

  • APM: Grafana & Prometheus

개인정보 점검 솔루션 / 소프트웨어 품질인증(GS 인증) 취득

2024.06 ~ 2024.08
  • 공공기관 대상 솔루션 판매를 위해 취득해야하는 인증으로, 소프트웨어의 취약점, UI/UX, 성능 등 다양한 영역을 심사

문제

  • 출력 데이터 수에 따라, 통계 페이지 출력에 많은 시간이 소모되거나 Session Timeout이 발생

해결

  • 데이터 List와 Count 쿼리를 각각 호출하는데 Count 쿼리가 Index를 타지않고, 테이블을 Full Scan하고 있는 것을 파악하여 MySQL의 ‘SQL_CALC_FOUND_ROWS’ 옵션을 사용

  • 옵션을 통해 Count 쿼리를 삭제하고 List 쿼리에서 ROWS를 추출이 가능해졌으며, 이것으로 Slow Query의 원인을 제거

결과 및 회고

  • 해당 옵션을 사용하면 쿼리가 Index를 사용하지 않고 테이블을 Full Scan 하지만, 기존 쿼리에서 이미 Full Scan을 했기 때문에 ‘Full Scan + @’ 대신 ‘Full Scan’ 시간만을 사용하도록 변경

  • 이로 인해, 페이지 출력 시간을 단축하여 Session Timeout을 방지하고 인증 심사 과정에서 부하 테스트를 성공적으로 통과

개발 환경

  • 언어: PHP 7, JavaScript

  • 프레임워크: CodeIgniter 3, 4

  • 데이터베이스: MySQL 8

개인정보 점검 솔루션 / 웹 취약점 필터링 자동화를 위한 애플리케이션 방화벽(WAF) 도입

2024.06 ~ 2024.08

문제

  • 기존에 JavaScript의 정규식(Regex)을 통해 웹 취약점 필터링을 진행했으나, API 또는 파라미터가 추가되거나 비즈니스 로직이 변경되면 필터링 로직도 변경해줘야 하는 의존성이 존재

해결

  • 웹 서버에 WAF(modsecurity)를 구축하고, OWASP 재단의 CRS(Core Rule Set)를 적용하여 웹 취약점(XSS, SQL Injection 등) 필터링을 방화벽에서 처리하도록 변경

  • 정상적인 파라미터(RANK, ID)의 값을 공격으로 간주하여 차단되는 사이드 이펙트가 발생하여, Custom Rule을 통한 예외 패턴 등록

결과 및 회고

  • 웹 취약점 필터링 책임을 서버(방화벽)로 이관하여 개발 부담 하락

  • CRS 관리를 통한 새로운 웹 취약점에 대한 대비 가능

개발 환경

  • OS: RockyLinux 8

  • WEB: Apache

개인정보 점검 솔루션 / ERROR 및 Alert 전파를 위한 SMS 외부 플랫폼 연동

2023.02 ~ 2023.02

문제

  • 솔루션 서버나 엔진 현황 또는 점검 결과를 확인하기 위해 웹페이지를 계속 모니터링해야 했으며, 주말이나 담당자의 휴가로 인해 이상 현상을 늦게 발견하는 일이 발생

해결

  • 솔루션의 ERROR와 중요 Alert을 관리자에게 전송할 수 있도록 외부 SMS 플랫폼 연동을 진행

  • 솔루션 서버에서 주기적으로 외부 플랫폼 API에 SMS 데이터와 인증키(authKey)를 전송

결과 및 회고

  • 솔루션 가동/종료 및 결과 데이터와 같이 중요한 알림과 에러를 관리자가 실시간으로 확인할 수 있게되어, 솔루션 안정성을 높이고 장애를 예방

개발 환경

  • 언어: PHP 7, JavaScript

  • 프레임워크: CodeIgniter 3, 4

  • 데이터베이스: MySQL 8

기업 홈페이지 / 홈페이지 (물리)서버 구축 및 개발

2022.01 ~ 2022.06

기업 홈페이지 리뉴얼과 서버 구축을 수행

문제

  • 기존 홈페이지가 레거시 코드(JSP)로 개발되어 있었고, 관리자페이지가 존재하지 않았기 때문에 운영(팝업, 베너, 글등록, 문의답변)에 여러 제약사항이 존재

해결

  • 클라우드를 고려했으나, 기존에도 물리서버를 이용했었고 솔루션 개발사인만큼 물리서버의 구축과 운영에 대한 노하우가 충분하여 물리 서버에 서비스를 구축

  • 서비스 환경(WEB, DB, PHP)을 구축하고 WordPress와 플러그인(JavaScript, MySQL 기반)을 사용하여 개발을 진행

결과 및 회고

  • 기존 코드를 재사용하지 못했지만, 유지보수성을 개선하고 플러그인을 통한 쉬운 관리(SEO 최적화, 반응형 웹 등)가 가능

  • WordPress의 관리자페이지를 활용하여 팝업, 베너, 문의답변 등에 대한 운영이 가능

개발 환경

  • OS: RockyLinux 8

  • 언어: PHP 7, JavaScript

  • 프레임워크: WordPress

  • 데이터베이스: MySQL 8

비 개발 프로젝트 / SVN의 Log와 Review 기능의 한계로 인한 Git 도입

2024.10 ~ 2024.10

문제

  • SVN 환경에서 Convention 통합과 로그 추적의 어려움과 Review가 누락되는 일이 발생

해결

  • 가장 널리 사용되고 부족한 기능을 보완할 수 있는 Git을 도입했고, 테스트 기간을 거치면서 Convention과 Review 프로세스를 정리하여 신규 개발에 Git을 사용하면서 기존 SVN의 데이터 보존

결과 및 회고

  • 로컬 코드 관리와 코드 통합이 수월해졌으며, 코드 리뷰와 테스트 코드 문화가 정착할 수 있는 환경을 구축

업무 자동화 / Selenium을 통한 반복적인 웹 기반 업무 자동화

2023.12 ~ 2023.12

문제 및 해결

  • 반복적인 업무를 줄여서 업무 효율성을 높이기 위해 Python Selenium을 사용

결과 및 회고

  • 1일 1회 홈페이지의 서비스를 테스트하고 자동 스크린샷을 통해 증적 자료를 남기고 검증

  • 월 1회 진행하는 솔루션 정기 보고서 생성 업무를 자동화하고, 메일 발송 전 검증

프로젝트

프로젝트명
이커머스 서비스 BE 개발
소속/기관명
개인 프로젝트
프로젝트 기간
2024.12. - 진행 중
(6개월)
프로젝트 설명

개요

동시성 제어(선착순 쿠폰 발급)가 적용된 이커머스 서비스 개발


학습 내용

  • 클린 아키텍처를 구현하기 위한 계층 분리와 의존성 역전 적용

  • Docker로 Redis, MySQL, Kafka 서비스 컨테이너 생성 및 테스트 컨테이너를 통한 테스트 환경 구축

  • Postman API 명세 작성 및 Swagger UI 연동을 통한 API 명세 작성 자동화

  • JPA로 CRUD 작업을 SQL 언어에 의존하지 않고 데이터베이스 작업을 추상화

  • 동시성 제어(선착순 쿠폰 발급)를 위한 DB 락(낙관적/비관적 락) 적용과 Redis의 분산 락을 통한 데드락 방지와 처리속도 개선

  • Redis 기반 글로벌 캐시를 적용하여 빠른 데이터 접근과 DB 부하 분산(캐시 스토리지)을 유도하는 Redis 활용에 대해 학습하고, 이를 상위 판매 제품 기능에 적용

  • Kafka로 EDA(이벤트 기반 아키텍처)를 적용하여 애플리케이션 이벤트 발행 및 Pub-Sub 방식의 비동기 메세지 아키텍처 학습

  • 부하테스트 시나리오 작성과 해당 시나리오에 기반한 k6 스크립트를 통한 부하테스트 수행

  • APM(Grafana&Prometheus) 시스템을 구축하여 테스트 결과를 분석하고, 가상 시스템 장애 예방 및 대응 보고서 작성

학습 환경

  • 백엔드: SpringBoot 3.2, JPA

  • 인프라: Redis, Kafka, Grafana

  • 데이터베이스: MySQL 8, H2

  • 테스트: JUnit, AssertJ

자기소개

자기소개

Introduce

공공기관 대상 B2B 솔루션의 메인 개발자로서, 데이터 가공과 시각화 시스템 구축 경험을 쌓으며 10만건 이상의 개인정보 유·노출을 방지했습니다.


담당자들과의 유기적인 커뮤니케이션을 위해 노력합니다.

업무 중 가장 중요하게 여긴 가치는 유기적인 커뮤니케이션이었습니다.

5년간 50여 개 이상의 클라이언트들과 협업하며, 원활한 소통을 통해 신뢰 기반의 협업 환경을 구축했습니다.

이로 인해 업무 누락을 줄이고 불필요한 비용을 절감하는 성과를 얻을 수 있었습니다.


문제를 해결하고, 개선해 나가는 것을 좋아합니다.

시스템 운영 과정에서 약 120건의 기술 부채(bug, feat)를 해소하며, 안정성과 효율성 향상에 기여했습니다.

단순한 버그 수정뿐 아니라, 네트워크, DB 등 다양한 영역의 문제를 분석하고 해결하는 것에 적극적으로 참여했습니다.

또한, 반복 작업을 자동화하는 등 작은 불편을 개선하며 워크플로우를 최적화하는 데 흥미를 갖고 일해왔습니다.


Skills

  • Spring Framework 기반 업무관리시스템 개발

  • PHP 기반 솔루션 시스템 개발

  • MySQL 테이블 구조와 Index 설계 및 수정 경험과 실행계획(explain) 분석을 통한 Slow Query 개선

  • Slack과 Notion, Figma 등을 통한 협업과 클라이언트와의 적극적인 커뮤니케이션

  • 물리서버(CentOS, RockyLinux) 서비스(Tomcat, MySQL 등) 구축 및 운영

자격증

자격증명
정보처리기능사
점수/급 | 발급 기관
기능사 | 한국산업인력공단
취득월
2019.03

교육

소속/기관
서울과학기술대학교
종류 | 전공명/전공계열
대학교(학사) | 정보통신융합공학과
재학 기간 (재학 상태)
2024.03. - 재학 중
소속/기관
세명컴퓨터고등학교
종류 | 전공명/전공계열
고등학교 | 스마트디바이스
재학 기간 (재학 상태)
2017.03. - 2020.02. (졸업)

기술 스택

기술 스택
Java
Spring
PHP
JavaScript
Docker
Redis
grafana
MySQL

포트폴리오

타입
URL
댓글