프로젝트 목록으로

공공 정보 플랫폼 성능 개선과 운영

공공 정보 플랫폼을 19개월간 단독으로 개발·운영하며 발주처 작업 요청 600건 이상을 처리했습니다. 퇴사할 때 이 업무는 두 명이 나눠 맡게 됐습니다.

기간
2024.05 ~ 2025.12 (19개월 단독 운영)
역할
백엔드 개발과 운영, 데이터베이스 성능 개선, 인프라·웹 접근성·보안 취약점 대응
기술
Java, Spring Framework, MySQL, Linux

주요 성과

  • 발주처 작업 요청 600건 이상 단독 처리 — 퇴사 시 동일 업무를 두 명이 분담
  • 타임아웃 민원이 발생한 MySQL 5.5 조회를 서버 로그로 특정하고, 쿼리 재작성·복합 인덱스를 EXPLAIN으로 검증해 30초→1초로 단축
  • 디스크 사용률 93%에 대응해 증가 추이와 비용을 근거로 300GB 증설 승인을 확보하고 데이터를 이관했습니다. 경로 전환 후 발생한 동영상 404는 Tomcat Context의 링크 접근 제한을 원인으로 확인해 해결했습니다.
  • 정기 백업 도입 과정에서 연동 실패 원인을 클라우드와 서버 사이 보안관제센터의 방화벽으로 확인하고 협의로 해결
  • 반복 민원 대응을 자동화하고 절차를 매뉴얼화해 작업 시간을 1일→1시간, 민원 평균 처리 시간을 2시간→10분으로 단축
  • 웹 접근성 심사 지적사항을 직접 수정해 정보통신접근성 품질인증 갱신에 대응하고, 모의해킹·웹 취약점 점검 후속 조치 수행

주요 범위

  • 서비스 운영
  • SQL 최적화
  • 장애 대응
  • 업무 자동화

어떻게 줄였나: 레거시 조회 병목 30초 → 1초

이 플랫폼은 약 20GB 데이터를 다루는 MySQL 5.5 기반 레거시 시스템입니다. 이 버전은 서브쿼리 최적화가 약해 서브쿼리가 병목이 되기 쉽습니다. 운영 중 느린 화면은 한두 건이 아니었고, 그중 수치가 가장 분명했던 사례를 기준으로 설명합니다. 문제가 된 쿼리는 서브쿼리 중심인 데다, 조회 조건에 쓰이는 컬럼에는 인덱스가 하나도 없었습니다.

타임아웃 민원이 들어오거나 직접 쓰다 느리다고 느낀 화면은 서버 로그로 병목이 DB 쿼리임을 확인했고, 서브쿼리를 조인으로 재작성해 인덱스를 타도록 수정하고, 조회 조건에 맞는 복합 인덱스를 추가했습니다. 로컬에서 EXPLAIN으로 실행 계획을 검증한 후 운영 서버에 반영했습니다.

그 결과 대표 사례에서는 30초 걸리던 조회가 1초로 줄었고 타임아웃 민원이 사라졌습니다. 같은 방식으로 인덱스·쿼리 재작성이 필요한 다른 화면도 운영 중에 반복적으로 다뤘습니다.