프리랜스 백엔드 엔지니어 · 말라가

Maxi
Kirschberg

API, 통합, 자동화, 관측 가능한 시스템.
시뮬레이션 데이터도, 장난감 프로젝트도 없습니다.

↓ 스크롤
01 · 소개

어떻게 여기까지 왔는가

당시 제 수준에 비해 너무 큰 시스템을 일찍부터 건드리기 시작했습니다. 주변 많은 사람이 입문용 CRUD 를 쓰는 동안, 저는 진짜 제품 뒤에서 실제로 무슨 일이 벌어지는지에 사로잡혀 있었습니다. 큐, 캐시, 동시성, 배포, 소켓, 인프라. 전환점은 백엔드를 더 이상 「API 를 만드는 일」로 보지 않고, 사람들이 정말로 쓰기 시작했을 때 무너지지 않는 시스템을 설계하는 일로 보기 시작한 그 날이었습니다. 그때부터 완전히 빠졌습니다.

제가 아는 것의 대부분은 무언가를 부수면서 얻어졌습니다. 서비스를 통째로 내려버린 배포, 잘못 구성된 프록시, 재현 불가능한 동시성 버그, 급하게 한 PostgreSQL 마이그레이션, 운영에서 말도 안 되는 리다이렉트를 뱉던 미들웨어. 바로 그 자리가 가장 많이 배운 곳입니다. 예쁜 인터페이스를 만드는 것보다 복잡한 시스템을 디버깅하고 진짜 병목을 추적하는 일이 훨씬 즐겁다는 걸 알게 됐습니다. 무언가가 왜 저수준에서 실패하는지 이해하고 우아하게 고치는 순간이 제가 책상 앞에서 플로에 가장 가까이 가는 때입니다.

시간이 지나며 제 프로젝트들은 진짜 아키텍처 작업으로 옮겨갔습니다. 자동화된 파이프라인, 실시간 SSE, 멀티 서비스 Docker 스택, nginx 리버스 프록시, 스크래핑·트렌드 시스템, 콘텐츠 자동화, 사내 도구. 「범용 앱」에는 큰 관심이 없었습니다. 저는 실제로 움직이는 제품을 위해 유용하고 빠르고 안정적인 인프라를 짓고 싶습니다.

02 · 스택

제가 사용하는 도구

이 목록은 제가 참고 쓰는 것이 아니라, 먼저 손이 가는 것들입니다. 발표 글이 아니라 운영에서 다년간 닳아본 결과로 선택했습니다.

03 · 배포

최근 작업

소수의 진짜 시스템들. 모두 실제 사용자 기반을 위해 운영 중입니다. 절반쯤 만든 데모를 늘어놓은 포트폴리오가 아닙니다.

Kramaru

편집 자동화 · 13 사이트 · 운영 중

11 개 트렌드 소스를 추적하고, 기회를 점수화하고, 기사를 생성·검토하여, 13 개 니치 사이트에 12 개 언어로 배포하는 멀티 테넌트 출판 플랫폼. Postgres, pg-boss 워커, Claude 연동, 자체 QA 파이프라인, 그리고 모든 큐의 라이브 tail 을 보여 주는 대시보드.

kramaru.es

PolyMarket trader

크립토 · 24/7 라이브

스마트 익절, 시간 게이트, 서킷 브레이커를 갖춘 네 개의 polyvps 전략이 24/7 가동. 백테스트가 아니라 실제 자금. 일일 지표 대시보드, 킬 스위치, 진입마다의 감사 로그.

Triada AD

스포츠 분석 · Docker

OpenFootball 위에 Sofascore 강화 데이터를 얹은 축구 픽 정산 엔진. 컨테이너별로 하드닝된 Docker 스택에 연결되어 있습니다. NGINX, Postfix, 과거 사건 이후 헤더 리플레이 공격을 막기 위해 Server Actions 암호화 키를 고정.

TopSec

SaaS · 세탁소

Flutter Desktop POS, Node 백엔드, MySQL, 감열 인쇄, WhatsApp 연동. 실제 고객, 오프라인 우선.

Live Demo · .NET 8 이벤트 스트림

SSE · Postgres · 실시간

mkir.es 의 공개 데모: 하나의 .NET 8 프로세스가 Server-Sent Events 로 데이터베이스 변경 이벤트를 여러 브라우저에 팬아웃. 클라이언트 의존성 0, 일반 HTML 이 Postgres 트리거를 실시간으로 렌더링합니다.

mkir.es
04 · 케이스 스터디

TopSec, 깊게

보통은 한 문장으로 요약하는 프로젝트의 풀 버전. 어려웠던 결정, 제가 망가뜨린 것, 그리고 진짜로 살아 있는 부분.

문제

TopSec 은 거대 인프라나 제품에 비해 너무 무거운 스택에 기대지 않고도 데이터를 실시간으로 집계·동기화·시각화하기 위해 존재합니다. 요구는 말로는 단순하고 만드는 일은 어려웠습니다. 여러 서비스가 동시에 대화하는 동안에도 데이터를 살아 있게, 빠르게, 일관되게 유지하는 것.

가장 어려웠던 결정

.NET 8 백엔드에 살 것과 Next.js 쪽에서 풀 것 사이에 분명한 선을 긋는 일. 미묘한 한 사례가 그 선을 분명하게 만들었습니다. /api 라우트와 next-intl 미들웨어가 함께 작동하면서 /es/api/* 로 향하는 307 리다이렉트가 발생하고 있었던 것입니다. 기술적으로는 유효하지만 실제로는 망가진 상태. 특정 로케일에서 실시간·통계 엔드포인트가 조용히 죽고 있었습니다.

아무도 부탁하지 않는 패치가 엔지니어 요율을 정당화합니다. 리다이렉트 규칙을 하나하나 고치는 대신, 저는 미들웨어 매처를 다시 만들어 /api 를 완전히 배제했습니다. 시각적으로는 작은 변경, 아키텍처상으로는 큰 변경.

너무 일찍 최적화하는 것은 나쁘다. 처음부터 성능을 무시하는 것은 더 나쁘다. 작업 원칙

또 다른 결정은 PostgreSQL 을 단일 진실 원천으로 유지한 것입니다. 이 제품에서는 일관성과 복잡한 쿼리를 쓸 수 있는 능력이 NoSQL 로 짜낼 수 있는 어떤 속도 이득보다도 가치 있었습니다. 지루함이 옳은 답일 때 지루함은 좋습니다.

제가 망가뜨린 것

한 번은 Docker 이미지가 정말로 재빌드됐다고 가정했다가 운영이 내려간 적이 있습니다. 「새」 코드가 옛 코드처럼 계속 동작했어요. 진짜 범인은 npm ci 였습니다. package-lock 이 없어서 조용히 실패하면서 빌드를 불일치 상태로 남겨 둔 것이죠. 파이프라인 문제를, 애플리케이션 로직 디버깅으로 몇 시간씩 소진했습니다.

교훈 어떤 배포도 자기 눈으로 어떤 산출물이 실제로 돌아가는지 확인하기 전까지는 의심하라. 이미지 SHA, 컨테이너 해시, 부팅 시 빌드 커밋 로깅. 평생 쓸 1 분 중 가장 싼 1 분입니다.

결과

  • VPS 위의 안정적 멀티 서비스 아키텍처: 백엔드, 프론트엔드, Redis, PostgreSQL, nginx, 모두 협조.
  • 미들웨어 재작성 이후 라우팅·실시간 오류가 크게 감소.
  • 정밀한 캐시 배치와 깔끔한 책임 분리로 응답 시간 향상.
  • 코어를 다시 쓰지 않고도 새 모듈을 키울 수 있는 아키텍처.
  • 공개 표면: mkir.es. 더 깊은 기술 워크스루는 요청 시 제공.
05 · 일하는 방식

제가 변호할 의견

트위터가 아니라 운영 사고로 얻은 강한 입장. 어느 하나에 긴장한다면, 우리는 잘 맞을 가능성이 큽니다.

새 프로젝트의 첫 두 시간

  1. 진짜 비즈니스·사용자 문제를 이해한다. 클라이언트가 필요하다고 믿는 스택이 아니다.
  2. 한 줄의 코드를 쓰기 전에 잠재 병목을 식별한다.
  3. 종이나 문서에 데이터 흐름을 스케치한다.
  4. 최소 실행 가능 아키텍처를 그린다. 그 이상은 아니다.
  5. 유행이 아니라 실제 제약에 맞춰 스택을 고른다.
  6. 첫날부터 재현 가능한 환경을 준비한다.
  7. 어느 부분이 확장되어야 하는지, 더 중요하게 어느 부분은 확장되면 안 되는지 결정한다.

사고를 형성한 참고

06 · 받지 않는 프로젝트

정직한 필터

「아니오」를 말할 줄 알아야 「예」가 신뢰할 만해집니다. 제가 적임자가 아닐 프로젝트들.

07 · 가용성

함께 일하기

2022 년부터 프리랜스·컨트랙트 활동 중. 리모트 우선 역할, 또는 프로젝트가 가치 있을 때 말라가와 코스타 델 솔에서의 하이브리드에 열려 있습니다. 엔지니어링이 프로세스 아래로 사라지는 깊은 기업 환경에는 관심이 없습니다.

상태
새 프로젝트에 가능, 범위에 따라 유연하게.
협업 형태
프리랜스, 컨트랙트, 복잡한 백엔드 구축, 시스템 아키텍처 감사.
요율
시간당 35~60 유로, 범위와 책임에 따라. 프로젝트 단가도 가능.
위치
리모트 우선. 프로젝트가 그만한 가치가 있을 때 말라가·코스타 델 솔 하이브리드.
언어
스페인어(모국어). 영어(C1, 기술·업무).
학력
DAM, 멀티 플랫폼 애플리케이션 개발.
08 · 연락

연락하기

이메일이 가장 빠른 답을 받습니다. 따뜻한 소개는 LinkedIn, 코드는 GitHub.

이메일maxikirschberg1@icloud.com linkedinMaximilian Kirschberg github@MaxiKirCas 포트폴리오mkir.es