꽤 긴 시간동안 포스트를 하지 못했다. 이런 저런 이유가 있겠지만 가장 큰 이유 2가지는 업무와 건강상의 이유로 공백이 꽤나 길어졌다.
지난 몇년간 업무상으로 익힌 여러 스킬들이 있고, 예전의 포스팅들을 보며 "내 과거가 이랬었구나. 지금이랑은 많이 다르구나"를 많이 느끼고, 개발이라는 업무 환경만 놓고 보더라도 참 많이 변했음을 느낀다.
그동안 서비스 회사에서 ASP.NET Core, Python 등으로 백엔드 업무를 진행했고, 간간히 요청이 오면 프론트 작업까지 병행하기도 했다. 이후 여러가지 많은 일들이 있었지만 다시 마음을 다잡고 미래의 내가 지금의 나를 다시 돌아볼 수 있는 포스팅을 다시 이어가고자 한다.
최근에는 지인이 개발 요청을 준 사항이 있어서 간단한 프로젝트를 진행중이다. 특정 도메인을 언급할 순 없지만 AI와 협업하는 AI-Human coWorking 시스템을 개발했고 지속적으로 고도화 중이다.
초반 구축 과정에선 간단한 구현만 진행하는 것으로 설계하여 Flask 프레임워크를 채택하여 문서/일정/WBS/멤버 관리 등 일반적인 업무에 사용하는 내용만 생각했는데, 해당 내용들을 완성하고 보니 AI Agent를 통해서 기획 문서를 공유하고 AI Agent가 일부 페어 프로그래밍을 진행할 수 있을만한 포인트를 확인하여 최근 AI 서비스에서 많이 채택하는 FastAPI로 전체 서비스 이관을 진행할 예정이다.
이 프로젝트는 처음에는 Flask 기반의 개인 서비스 개발 프로젝트로 시작했다.
문서, 에셋, WBS, 일정, 멤버 관리 기능이 한 애플리케이션 안에 모여 있으며, 최근에는 Cloudflare D1/R2 이관과 React 프론트 전환이 함께 진행되었다.
"왜 CloudFlare를 사용했는가?"라고 궁금증이 생길 수 있다. 물론 GCP나 AWS 등의 서비스도 검토 대상에 두었지만, 현재 상용화 서비스가 아닌 서비스 구현을 위한 실험적인 단계이기 때문에 인프라 비용이 발생하지 않는 CloudFlare와 Pythonanywhere을 채택했다.
현재 구조는 크게 세 축으로 볼 수 있다.
app/frontend/worker-python/현재 Flask 서버는 아래 역할을 동시에 맡고 있다.
즉, 전통적인 서버 역할과 임시 운영 보조 기능이 한곳에 모여 있다.
repository/provider 패턴이 이미 존재한다.이 점들은 FastAPI 마이그레이션에 매우 유리하다.
다음 요소들이 Flask 내부 전역 컨텍스트에 기대고 있다.
current_appgBlueprintjsonifysend_from_directorysend_file이 의존성은 프레임워크 전환 시 가장 먼저 정리해야 하는 대상이다.
현재 서버는 아래를 한 앱에서 직접 처리한다.
instance/ 기반 로그 파일uploads/ 기반 파일 서빙이 자체가 문제는 아니지만, 범용 배포를 목표로 할 때는 실행환경 의존을 좀 더 드러내고 분리해야 한다.
worker-python/은 FastAPI 기반이지만 Cloudflare Worker 런타임을 전제로 한다.
즉, FastAPI 경험은 이미 일부 축적되어 있지만, 그 코드가 곧바로 “범용 서버”를 의미하지는 않는다.
Flask 중심의 실서비스 서버와 Cloudflare 전환 실험 코드가 공존하고 있으며, 핵심 도메인 로직은 꽤 재사용 가능하지만 프레임워크/런타임 결합을 더 느슨하게 만들어야 한다.
이번 전환의 목적은 “Flask가 나쁘다”가 아니다.
핵심은 이 서비스가 특정 런타임이나 호스팅 환경에 잠기지 않게 만드는 것이다.
현재 운영 리스크와 방향성은 아래처럼 정리된다.
Flask보단 FastAPI가 적합하다는 생각을 했다.worker-python/)이 일부 있다.기존 Flask 앱 옆에 범용 FastAPI 앱을 세우고, 공통 기반을 분리한 뒤 API부터 단계적으로 이전한다.