백엔드와 API 설계
기능 구현보다 먼저 계약과 경계를 생각합니다. 잘 만든 API는 화면이 바뀌어도 오래 버틸 수 있어야 합니다.
- 요청과 응답 계약을 먼저 정의하기
- 변경에 강한 서비스 경계 설계하기
- 로그와 장애 대응까지 포함해 운영 가능성 보기
Developer Notes / Portfolio
theokei.com은 링크만 모아 둔 포트폴리오가 아니라, 제가 어떤 문제를 어떻게 풀고 어떤 기준으로 기술을 고르는지 정리하는 개인 운영 노트입니다. 서울에서 일하는 백엔드 중심 풀스택 개발자로서 시스템 설계, 리팩토링, 제품 구현, 운영 자동화에 대한 생각을 차분하게 쌓아 가려 합니다.
현재 역할
Full-Stack Developer at DoubleNC
주력 주제
Backend, APIs, Refactoring
사이트 목적
실무 판단 기준과 작업 기록 정리
Site Direction
승인 여부와 상관없이 이 사이트는 방문자가 실제로 정보를 얻고 다음 행동을 결정할 수 있는 곳이어야 합니다.
예전 구조는 제 이름, 기술 스택, 외부 링크를 빠르게 보여 주는 데에는 충분했지만, 방문자가 머물며 읽을 이유는 약했습니다. 이제는 단순 소개 랜딩이 아니라 개발자로서의 판단 기준과 경험을 구조적으로 남기는 공간으로 바꾸려 합니다.
그래서 섹션 이름부터 문장 밀도까지 전부 다시 설계했습니다. 짧은 슬로건보다 실제 문단을 우선하고, 장식보다 탐색성과 가독성을 우선합니다. 공개할 내용이 충분하지 않은 영역은 비워 두지 않고, 쓸모 있는 본문이 생겼을 때만 보여 주는 방식으로 운영할 생각입니다.
운영 원칙
이 페이지에서 바로 얻을 수 있는 것
백엔드 설계, 리팩토링, 배포와 운영, 제품 구현 범위를 한 번에 확인할 수 있습니다.
문제를 해석하고 기술을 선택하는 기준을 짧은 원칙 형태로 정리했습니다.
필드 노트 샘플을 통해 앞으로 어떤 종류의 글을 축적할지 미리 볼 수 있습니다.
연락 채널과 외부 프로필을 분리해 두어 목적에 맞게 바로 이동할 수 있습니다.
Focus Areas
특정 프레임워크 이름보다, 어떤 문제를 어떤 조건에서 푸는지가 더 중요하다고 생각합니다. 아래 네 축은 앞으로 이 사이트에서 반복해서 다룰 핵심 주제입니다.
기능 구현보다 먼저 계약과 경계를 생각합니다. 잘 만든 API는 화면이 바뀌어도 오래 버틸 수 있어야 합니다.
저는 개발이 끝난 뒤 코드를 다시 읽고 구조를 손보는 시간을 꽤 중요하게 생각합니다. 리팩토링은 미학이 아니라 유지 비용을 줄이는 작업이라고 봅니다.
백엔드를 중심에 두지만 제품은 결국 사용 경험까지 닿아야 완성된다고 생각합니다. 그래서 프론트엔드와 모바일도 필요한 만큼 직접 다룹니다.
코드가 배포된 뒤 어떻게 돌고 어디서 깨질 수 있는지까지 봐야 좋은 설계라고 생각합니다. DevOps를 별도 역할이 아니라 제품 책임의 일부로 다룹니다.
Working Principles
멋있어 보이는 답보다 오래 유지되는 답을 선호합니다. 아래 원칙들은 기술 스택이 달라도 거의 바뀌지 않는 편입니다.
Principle
큰 추상화로 시작하기보다 핵심 흐름을 먼저 확인하고, 검증된 부분 위에 구조를 키우는 방식을 선호합니다.
Principle
배포 이후의 로그, 장애 대응, 설정 관리가 불편하면 설계가 끝난 것이 아니라고 봅니다.
Principle
새 기술을 쓰는 것보다 왜 지금 필요한지, 무엇을 포기하는지 기록하는 편이 더 중요합니다.
Principle
변경 비용이 커지는 지점을 미리 정리해야 다음 기능이 덜 위험해집니다. 그래서 저는 구현과 정리를 분리하지 않습니다.
Principle
팀원이 빠르게 이해할 수 있다면 약간 투박한 코드도 괜찮다고 생각합니다. 유지보수성은 결국 읽기 비용과 연결됩니다.
Principle
지식이 머릿속에만 있으면 다음 프로젝트에서 재사용하기 어렵습니다. 이 사이트는 그 판단을 글로 남기는 저장소 역할도 합니다.
Decision Log
기술 이름을 나열하는 대신, 어떤 상황에서 왜 고르는지까지 함께 적습니다. 앞으로도 새 글을 쓸 때 이 기준을 계속 보강할 생각입니다.
서비스의 중심 로직은 TypeScript와 Node.js 생태계를 기본으로 두고, 필요할 때 Go로 더 단단한 실행 경로를 선택합니다.
제품 흐름을 검증하고 사용자 경험을 끝까지 확인하기 위해 React 중심의 프론트엔드와 모바일 도구도 함께 씁니다.
운영 자동화와 배포 안정성을 위해 클라우드, 컨테이너, CI 도구를 꾸준히 다룹니다.
서비스 성격에 따라 관계형과 문서형 저장소를 선택합니다. 데이터 모델은 처음부터 변경 가능성을 염두에 두고 만듭니다.
기술을 고를 때 보는 기준
지금 편한 선택보다 3개월 뒤 구조를 바꿀 때 드는 비용을 먼저 생각합니다.
개인적으로 선호하는 도구보다 팀이 빠르게 읽고 배포할 수 있는 도구를 우선합니다.
문제가 생겼을 때 어디를 봐야 하는지 빠르게 알 수 없는 구조는 좋은 선택이 아니라고 봅니다.
Recent Posts
메인 사이트를 정적인 명함처럼 두지 않기 위해, 최근에 정리한 글 일부를 여기서 바로 보여 줍니다. 방문자가 지금 어떤 주제를 실제로 쓰고 있는지 한눈에 확인할 수 있게 하려는 목적입니다.
2026년 3월 7일
OpenTelemetry란? OpenTelemetry(OTel)는 CNCF가 관리하는 관측 가능성(Observability) 표준으로, Traces, Metrics, Logs 세 가지 신호를 통합 수집하는 벤더 중립 프레임워크입니다. Spring Boot [...]
블로그에서 읽기2026년 3월 7일
BuildKit이란? Docker BuildKit은 Docker 18.09에서 도입된 차세대 빌드 엔진으로, 기존 빌드 엔진 대비 병렬 빌드, 캐시 마운트, 시크릿 마운트 등 [...]
블로그에서 읽기2026년 3월 6일
Drizzle Relations란? Drizzle ORM의 Relations API는 테이블 간 관계를 TypeScript 레벨에서 선언하여 타입 안전한 JOIN 쿼리와 중첩 데이터 로딩을 가능하게 [...]
블로그에서 읽기Blog Archive
전체 글은 blog.theokei.com에서 확인할 수 있습니다. 시스템 설계, 백엔드, 리팩토링, 운영 관련 글을 계속 쌓아 갈 예정입니다.
Field Notes
아래 글은 장식용 카드가 아니라 앞으로 이 사이트에 축적할 콘텐츠의 방향을 보여 주는 샘플입니다. 짧더라도 실무에서 다시 꺼내 볼 수 있는 문장을 남기려 합니다.
Field Notes
백엔드 작업을 시작할 때 저는 화면보다 먼저 API 계약을 확인합니다.
처음부터 모든 엔드포인트를 완벽하게 만들 수는 없지만, 최소한 어떤 행위를 제공하는지와 실패했을 때 어떤 상태를 돌려줄지는 초기에 정리해야 합니다. 이 기준이 없으면 프론트엔드와 백엔드가 각자 다른 전제를 쌓기 시작하고, 나중에는 기능보다 조율 비용이 더 커집니다.
저는 API를 설계할 때 이름, 상태 코드, 인증 경계, 확장 가능성을 함께 봅니다. 지금은 단순 목록 조회처럼 보여도 이후에 필터, 정렬, 권한, 로깅이 붙는 순간 구조가 흔들릴 수 있기 때문입니다. 작은 서비스일수록 더 빨리 계약을 글로 남겨 두는 편이 좋았습니다.
핵심 포인트
Field Notes
코드를 바로 고치기 전에 왜 위험한지부터 짧게 써 두는 습관이 있습니다.
리팩토링이 실패하는 가장 흔한 이유는 문제를 정확히 이름 붙이지 않은 채 손부터 대기 때문이라고 생각합니다. 저는 수정에 들어가기 전에 반복되는 조건문인지, 책임이 섞인 함수인지, 외부 의존성이 너무 많은 모듈인지 먼저 분류합니다. 이름이 붙으면 줄여야 할 위험도 선명해집니다.
그다음에는 테스트 가능성, 영향 범위, 롤백 방법을 봅니다. 특히 서비스 코드에서는 예쁜 구조보다 안전한 이동이 중요합니다. 그래서 큰 리팩토링도 결국은 작은 단계들의 묶음으로 나누어 진행하는 편입니다.
핵심 포인트
Field Notes
혼자 만드는 프로젝트일수록 배포 이후의 관리 비용을 쉽게 잊게 됩니다.
기능이 동작하는 순간 만족하고 끝내면, 시간이 조금 지난 뒤에는 다시 손대기 어려운 프로젝트가 됩니다. 저는 개인 프로젝트라도 환경 변수 정리, 간단한 로그 정책, 배포 절차 문서화 정도는 최소 기준으로 가져가려 합니다. 그래야 나중에 다시 꺼내 봐도 어디서부터 이어야 할지 감이 남습니다.
작은 서비스에서는 오히려 과한 인프라보다 단순한 구조가 더 낫습니다. 다만 단순함이 무책임함과 같아지지 않도록, 누가 봐도 배포 흐름과 실패 지점을 파악할 수 있게 만드는 것이 중요합니다. 운영성은 규모가 커진 뒤에 붙이는 옵션이 아니라 초기에 습관처럼 심어 두는 성격에 가깝습니다.
핵심 포인트
Field Notes
프론트엔드와 백엔드를 모두 다룰수록 중심이 흐려질 위험도 같이 커집니다.
저는 스스로를 백엔드 중심 개발자로 정의하지만, 제품은 결국 사용자 경험까지 이어져야 한다고 생각합니다. 그래서 화면 작업을 할 때도 API 계약과 데이터 흐름을 함께 보고, 백엔드 작업을 할 때도 최종 사용 흐름이 어떻게 느껴질지를 계속 떠올립니다.
중요한 것은 모든 것을 깊게 아는 척하는 것이 아니라, 어디까지는 직접 책임지고 어디부터는 협업으로 풀어야 하는지 명확히 아는 일입니다. 범위를 넓히되 중심을 잃지 않는다는 말은 결국 문제를 끝까지 이해하되 해결 방식은 정직하게 선택한다는 뜻에 가깝습니다.
핵심 포인트
Quick FAQ
사이트를 처음 보는 사람이 빠르게 맥락을 잡을 수 있도록, 자주 받는 질문을 먼저 정리했습니다.
네. 다만 저는 자신을 백엔드 전문 개발자로 두고 있습니다. 프론트엔드는 제품 흐름을 끝까지 연결하기 위해 직접 다루는 영역에 가깝습니다.
즉, 화면을 구현할 수 있다는 사실보다 어떤 문제를 어디까지 책임질지 명확하게 보는 편입니다.
시스템 설계, API 기준, 리팩토링 판단, 배포와 운영 경험처럼 실무에 다시 꺼내 쓸 수 있는 메모가 중심이 될 예정입니다.
짧더라도 복붙한 요약이 아니라 직접 겪으며 정리한 기준을 남기는 방향으로 운영하려 합니다.
이제 이 사이트는 이름과 링크를 보여 주는 명함이 아니라, 제 판단 기준을 설명하는 문서이기도 하기 때문입니다.
방문자가 스킬 이름만 보고 떠나는 대신, 실제로 어떤 개발자인지 문장으로 파악할 수 있어야 한다고 생각했습니다.
구체적인 문의는 이메일이 가장 좋고, 가벼운 연결이나 이력 확인은 LinkedIn이 편합니다.
오픈된 코드와 작업 스타일은 GitHub에서 가장 잘 보실 수 있습니다.
Contact
채용, 협업, 기술 대화 모두 좋지만 아래처럼 목적이 명확할수록 더 빠르고 좋은 답을 드릴 수 있습니다.
대화 주제
연락 채널
가벼운 인사는 LinkedIn, 구체적인 문의는 이메일이 가장 좋습니다. GitHub에서는 코드와 작업 스타일을, Instagram 계정에서는 개인 로그와 개발 로그를 따로 볼 수 있습니다.
구체적인 문의나 협업 제안은 메일이 가장 빠릅니다.
코드 스타일과 관심 기술을 확인할 수 있습니다.
경력과 기본 이력을 빠르게 확인할 수 있습니다.
개인 일상과 분위기를 가볍게 볼 수 있습니다.
개발 관련 로그를 별도로 모아 두는 계정입니다.
대화의 목적이 선명할수록 더 좋은 답을 드릴 수 있습니다.