freelance engineer — infra · backend · database · observability

시스템이 조용히 잘 돌아가게 만듭니다

대규모 트래픽을 견디는 인프라와 백엔드를 설계하고, 병목 없는 데이터베이스를 만듭니다.

백엔드 · 인프라 10년차 원격 협업
아래로 스크롤

01 — 전문 분야

문제를 정의하고, 구조로 해결합니다

infrastructure

인프라 설계

어떤 문제를 다루는가

트래픽이 몰리면 느려지고, 한 컴포넌트의 장애가 전체로 번지고, 클라우드 비용은 왜 나가는지 알 수 없는 상태. 규모가 커질수록 구조의 빚이 드러납니다.

어떻게 접근하는가

장애 전파 경로를 먼저 그리고, 격리 단위를 기준으로 구조를 나눕니다. 모든 리소스는 IaC로 코드화해 재현 가능하게 만들고, 관측 지표를 붙여 비용과 성능을 같은 화면에서 봅니다.

할 수 있는 일

멀티 AZ 이중화무중단 배포 파이프라인오토스케일 정책 설계IaC 표준화클라우드 비용 최적화

backend

백엔드 설계

어떤 문제를 다루는가

기능은 계속 늘어나는데 코드는 서로 얽혀 있어, 하나를 고치면 다른 곳이 깨지는 상태. 배포가 두려워지는 순간이 설계를 다시 볼 때입니다.

어떻게 접근하는가

도메인 경계를 먼저 정의하고, 경계 사이는 명시적인 API 계약과 비동기 메시징으로만 통신하게 합니다. 팀이 서로를 기다리지 않고 배포할 수 있는 구조가 목표입니다.

할 수 있는 일

API 계약 설계이벤트·큐 기반 비동기 처리멱등성·재시도 설계레거시 단계적 분리부하 테스트

database

DB 최적화

어떤 문제를 다루는가

특정 화면만 유독 느리고, 새벽 배치가 낮 트래픽과 충돌하고, 락 경합으로 타임아웃이 발생하는 상태. 대부분 쿼리가 아니라 접근 패턴의 문제입니다.

어떻게 접근하는가

실행 계획과 슬로우 쿼리 로그로 병목을 수치로 특정한 뒤, 인덱스·스키마·캐시 계층 순으로 개입합니다. 개선 전후를 항상 같은 지표로 비교해 보고합니다.

할 수 있는 일

슬로우 쿼리 진단인덱스·실행계획 튜닝읽기/쓰기 분리파티셔닝·샤딩무중단 스키마 마이그레이션

apm / observability

APM · 모니터링

어떤 문제를 다루는가

장애가 나면 원인을 찾는 데 시간이 더 걸리고, 느리다는 제보는 있는데 어디가 느린지 아무도 특정하지 못하는 상태. 지표가 없으면 개선했는지도 증명할 수 없습니다.

어떻게 접근하는가

요청 단위 추적과 핵심 지표를 먼저 심어 병목을 눈으로 보이게 만듭니다. 대시보드는 담당자가 볼 화면 기준으로 구성하고, 알림은 실제로 대응이 필요한 조건만 남겨 피로도를 낮춥니다.

할 수 있는 일

분산 트레이싱 도입SLI/SLO 정의대시보드 설계알림 규칙 정리장애 원인 분석 리포트

02 — 아키텍처

설계의 의도가 보이는 구조

NDA로 실제 프로젝트명은 공개할 수 없어 구조만 익명화해 남겼습니다. 결과 수치는 아래 사례 섹션에 있고, 여기서는 그 구조를 고른 이유를 보여드립니다.

diagram a — write buffering

Web
Mobile
Partner API
CDN / WAF → API Gateway
App Service ×N auto-scale
Message Queue buffer
Worker Pool ×N
Primary DB
Object Storage

case A — traffic spike

왜 서버를 늘리지 않고 큐를 넣었나

선택지는 세 가지였습니다 — 인스턴스 증설, 커넥션 풀 확대, 큐 완충. 증설은 피크 5분을 위해 상시 비용을 키우고, 풀 확대는 압력을 DB로 넘길 뿐입니다. 접수와 처리를 분리하는 큐가 가장 작은 변경으로 가장 오래 버티는 선택이었습니다. 워커 소비 속도가 조절판이 되어, 이후 트래픽이 더 늘어도 구조는 그대로 유지됩니다.

관련 사례 보기 — 프로모션 트래픽

diagram b — read / write split

Application
Data Access Layer routing

Cache

hot path

Read Replica ×2

reads

Primary DB

writes
index rebuilt on execution planno schema change

case B — read path offloading

왜 스키마는 두고 접근 계층만 바꿨나

정산 배치와 목록 조회, 두 건에서 같은 판단을 했습니다. 스키마 재설계가 정석이지만 마이그레이션 리스크와 팀의 운영 부담이 개선 폭보다 컸습니다. 읽기 경로를 복제본과 캐시로 덜어내고 실행 계획 기준으로 인덱스만 재구성해도 목표 지연에 도달한다고 봤고, 실제로 그렇게 끝났습니다. 되돌릴 수 있는 변경만 쓴 것이 핵심입니다.

관련 사례 보기 — 정산 배치 · 인프라 재구성

03 — 사례

숫자로 남은 결과

의뢰는 대부분 소개로 이어져 건수가 많지는 않습니다. 회사명은 밝히기 어려워 업종과 규모만 남겼습니다.

가장 좋은 설계보다, 이 팀이 운영할 수 있는 설계

수천만 트래픽을 가정한 구조를 3인 팀에 그대로 얹으면 반년 뒤 아무도 손대지 못하는 시스템이 됩니다. 트래픽·인력·예산을 먼저 확인하고, 그 범위에서 가장 오래 버티는 선택을 제안합니다.

  • 운영 인력이 없으면 관리형 서비스를 먼저 봅니다. 직접 운영하는 쿠버네티스가 항상 정답은 아닙니다.
  • 지금 필요 없는 확장성은 만들지 않고, 나중에 갈아끼울 수 있는 경계만 남겨둡니다.
  • 비용이 성능보다 중요한 구간을 먼저 합의하고, 절감이 목표면 그렇게 설계합니다.
  • 떠난 뒤에도 팀이 운영할 수 있도록 문서와 인수인계를 산출물에 포함합니다.

주요 사례

이커머스2026.03 – 2026.05 · 8주·백엔드 4명 · 인프라 담당 없음 프로모션 트래픽에 밀리는 주문 처리, 서버 증설 없이 해결 40×peak absorbed

상황

MAU 500만 규모의 커머스였습니다. 프로모션 오픈 직후 몇 분간 요청이 평시의 수십 배로 몰려 결제 타임아웃과 중복 주문이 발생했습니다. 상주 인프라 담당자가 없고, 백엔드 4명이 기능 개발과 운영을 함께 맡고 있었습니다.

개입

큐 한 단계와 멱등키로 접수와 처리를 분리하는 구조를 제안했고, 적용은 팀이 하되 PR 리뷰와 페어 작업으로 같이 했습니다. 마이크로서비스 분리나 이벤트 소싱 같은 큰 구조 변경은 제안하지 않았습니다 — 이 인원이 계속 유지보수할 수 있는 최소 변경이 우선이었습니다. 대신 큐가 밀릴 때 주문 확정이 몇 초 늦어지는 건 팀과 합의하고 받아들였습니다.

결과

다음 프로모션에서 평시 대비 약 40배의 피크를 주문 유실 없이 흡수했고, 결제 p95는 1.2초를 유지했습니다. 인스턴스 증설이나 신규 운영 컴포넌트 추가는 없었습니다.

사용 기술AWS SQSECSAurora MySQLRedisTerraform
금융 / 정산2025.09 – 2025.11 · 10주·개발 6명 · DBA 1명 야간 정산 배치가 낮 트래픽을 침범하던 문제 해소 6h → 40mbatch window

상황

일 2,000만 건을 정산하는 시스템에서, 배치가 새벽에 끝나지 않아 낮 트래픽과 겹치고, 락 경합으로 서비스 쿼리까지 느려졌습니다. 새 시스템을 만들 예산은 없고, 기존 스키마도 유지해야 하는 조건이었습니다.

개입

전체 재계산을 증분 처리로 바꾸고 집계를 파티션 단위로 병렬화하는 설계를 제안했고, 팀이 적용하는 동안 예시 구현과 리뷰로 함께했습니다. 배치 읽기는 전용 복제본으로 분리했으며, 스키마 변경은 없었습니다. 정산 외의 다른 배치 구간은 손대지 않았습니다.

결과

정산 배치 완료가 6시간에서 40분으로 줄었고, 지연 알림이 사라졌습니다. 인수인계 문서와 재현 가능한 실행 절차를 함께 남겼습니다.

사용 기술PostgreSQLSpring BatchRead ReplicaPartitioning
미디어 / 콘텐츠2025.02 – 2025.03 · 5주·개발 3명 · 운영 전담 없음 비용을 줄이는 것이 목표였던 인프라 재구성 -34%monthly cost

상황

동시 접속 8만까지 오르는 서비스에서, 트래픽 대비 상시 확보된 인스턴스가 많았고, 목록 API는 캐시 없이 반복 조회되고 있었습니다. 운영 전담이 없어 '더 좋은 구조'보다 '손이 덜 가는 구조'가 필요했습니다.

개입

쿠버네티스 도입 대신 관리형 서비스 위에서 오토스케일 정책만 다시 잡는 방향을 제안했습니다. 목록 조회의 캐시 이전과 유휴 리소스 정리는 팀이 수행했고, 최종 구성은 IaC로 함께 고정했습니다.

결과

월 클라우드 비용이 34% 줄었고, 목록 API p95는 3분의 1이 되었습니다. 새로 운영해야 하는 컴포넌트는 캐시 하나뿐이었습니다.

사용 기술AWSCloudFrontElastiCacheTerraformAuto Scaling

단기 · 스팟 작업

2026.07 · 3일SaaS / B2B 본격 착수 전 3일 구조 검토, 재설계 대신 두 곳만 손보기로 Node.jsPostgreSQLRedisGrafana 3일
2026.01 · 1주스타트업 / 시드 MVP 초기 구조 자문 — 마이크로서비스 대신 모놀리스로 시작하도록 정리 Node.jsPostgreSQLAWS 1주
2025.12 · 4일스타트업 / 시리즈 A 기술 실사 대비 구조 점검 및 리스크 문서화 아키텍처 리뷰비용 분석보안 설정 검토 4일
2025.06 · 2일헬스케어 / 초기 신규 서비스 DB 스키마 리뷰 — 출시 전 인덱스·정규화 정리 MySQL스키마 설계 2일

* 모든 지표는 계약상 공개 가능한 범위로 반올림·일반화했습니다.

nda & confidentiality

기밀 유지는 계약 이전의 기본입니다

지금까지의 모든 작업은 NDA 아래 진행되었고, 이 페이지에도 회사명·서비스명·실제 스키마·코드는 어디에도 포함되어 있지 않습니다. 다이어그램은 구조만 남기고 익명화했으며, 트래픽 규모와 개선 지표는 원본 대신 반올림·일반화한 값만 적었습니다.

  • 고객사가 제공한 NDA 양식으로 계약합니다. 별도 양식이 없으면 표준 NDA를 먼저 제안합니다.
  • 계약·설계 산출물과 접근 권한은 프로젝트 종료 시 반환 또는 폐기하고, 개인 환경에는 사본을 남기지 않습니다.
  • 다른 고객사 이야기는 상담 자리에서도 식별 가능한 형태로 꺼내지 않습니다.

04 — 작업 방식

설계는 제가, 적용은 팀과 함께

1인으로 일하기 때문에 고객사 인프라를 직접 상시 운영하지는 않습니다. 문제를 진단하고 구조를 설계해 적용 가능한 형태로 넘기고, 팀이 실행하는 동안 옆에서 검토합니다. 떠난 뒤에도 팀이 운영할 수 있는 상태가 목표입니다.

01

진단

지표·로그·코드와 팀 상황을 함께 확인해 병목과 제약을 문서로 정리합니다. 보통 3일에서 2주.

02

설계 · 제안

선택지를 2~3개로 좁혀 비용·인력·리스크를 함께 제시합니다. 권하지 않는 안도 이유와 함께 적습니다.

03

적용 지원

실제 변경은 팀이 수행하고, 저는 PR 리뷰·페어 작업·의사결정 지원으로 붙습니다. 필요하면 예시 구현을 제공합니다.

04

인수인계

구조도·운영 절차·모니터링 기준을 문서로 남깁니다. 종료 후 일정 기간 질문에는 답합니다.

제가 하는 일

  • 구조 진단과 설계
  • 개선안 우선순위 정리
  • PR 리뷰 · 페어 작업
  • 예시 구현 · 부하 테스트
  • 문서화와 인수인계

하지 않는 일

  • 상시 운영 · 온콜 대응
  • 고객사 인프라 직접 조작
  • 인력 대체용 상주 개발
  • 장기 유지보수 단독 담당

05 — 기술 스택

도구는 문제에 맞게 고릅니다

아래는 실제로 설계 판단에 쓰는 것만 남긴 목록입니다. 주력과 보조를 구분해 표기했고, 보조는 담당 팀과 대화가 되는 수준이라는 뜻입니다. 화면에서 어떤 호출이 일어나는지, 기기에서 어떤 데이터가 어떤 주기로 올라오는지까지 같은 기준으로 볼 수 있어, 서버만 보고 내리기 어려운 판단에서 차이가 납니다.

클라우드

cloud·주력
AWSECS / EKSAuroraSQS · ElastiCacheLambdaCloudFrontGCP

백엔드

backend·주력
Node.js / NestJSSpring BootGoKafkagRPC

데이터베이스

database·주력
MySQL / AuroraPostgreSQLRedisMongoDBElasticsearch

인프라 도구

infra tools·주력
TerraformDockerKubernetesGitHub ActionsNginx

모니터링 · APM

monitoring·실무 경험
DatadogOpenTelemetryGrafanaPrometheusSentry

프론트엔드

frontend·보조
TypeScriptReactNext.js

임베디드 · 펌웨어

embedded·보조
C / C++MCU 펌웨어RTOSMQTT · BLE

06 — 연락처

함께 풀고 싶은 문제가 있다면

지금 겪고 있는 상황을 간단히 적어 보내주셔도 좋아요. 요구사항이 아직 정리되지 않았어도, 어떤 구조가 필요한지 함께 정리하는 것부터 시작합니다. 작게는 3일 진단부터 가능합니다.

메일 보내기