[IT] 서버 설치형 개인 공유형 마크다운 에디터 프로젝트: 백엔드는 Python

in #kryesterday

image.png

[IT] 서버 설치형 개인 공유형 마크다운 에디터 프로젝트: 백엔드는 Python vs Java?

안녕하세요, 가야태자 @talkit 입니다. ^^

지난번 글에서 제 프로젝트의 든든한 데이터베이스로 초경량 SQL 서버인 Firebird를 결정했다는 소식을 전해드렸습니다.

DB가 정해졌으니, 이제 이 데이터베이스를 다루고 마크다운 에디터의 비즈니스 로직을 처리할 백엔드 언어와 프레임워크를 결정할 차례입니다.

후보군은 역시 가장 대표적이고 강력한 두 축, Python(파이썬)과 Java(자바)입니다.

이번 프로젝트의 가장 중요한 핵심 가치가 "무료 클라우드(Oracle/Google Free Tier)에서도 쌩쌩 돌 수 있는 가벼움"과 "Docker를 통한 쉬운 배포"인 만큼, 제미나이와 함께 어떤 언어가 더 적합할지 꼼꼼하게 비교해 보았습니다.


⚖️ 백엔드 언어 비교: Python vs Java

비교 항목Python (FastAPI / Flask)Java (Spring Boot)
초기 메모리 (RAM)30 ~ 70 MB (극강의 가벼움)150 ~ 300 MB+ (상대적으로 무거움)
Docker 이미지 크기약 100 MB약 250 ~ 400 MB 이상
Firebird 연동firebird-driver (공식/네이티브)Jaybird (JDBC 표준 드라이버)
개발 & 배포 속도매우 빠름 (가벼운 스크립트 기반)컴파일 및 빌드 과정 필요

1. 자바(Java)의 아쉬운 점: 메모리 점유율

Java와 Spring Boot 조합은 엔터프라이즈급 대규모 시스템에서 검증된 강력한 카드입니다. Firebird용 JDBC 드라이버(Jaybird)도 매우 훌륭하죠.

하지만 JVM(Java Virtual Machine) 특유의 기본 구동 비용 때문에, 아무리 가볍게 띄워도 최소 150~300MB 이상의 RAM을 차지합니다. 1GB 안팎의 RAM을 제공하는 무료 클라우드 VM 환경에서는 Firebird DB 컨테이너와 함께 실행할 때 메모리 압박(OOM)을 받을 위험이 있었습니다.

2. 파이썬(Python)의 강력한 장점: 극강의 슬림함

반면 Python(FastAPI 기준)은 서버를 띄웠을 때 초기 메모리 사용량이 30~70MB 수준에 불과합니다. Alpine 기반 Docker 이미지를 활용하면 이미지 용량도 100MB 안팎으로 매우 슬림하게 만들 수 있어, 사용자가 원클릭으로 다운로드하여 배포하기에 부담이 전혀 없습니다.


💡 그렇다면 Python에서 ORM(Object-Relational Mapping)도 가능할까?

SQL을 직접 작성하는 것도 좋지만, 생산성과 코드 유지보수를 위해 "Python에서 ORM 사용이 원활한가?"라는 점도 중요한 체크 포인트였습니다.

결론부터 말씀드리면 "매우 잘 지원되며, 사용하기 편리하다"입니다!

  • SQLAlchemy + Firebird 연동: Python 진영의 대표 ORM인 SQLAlchemysqlalchemy-firebird 서드파티 Dialect 패키지를 지원합니다. 이를 이용하면 Firebird DB의 테이블을 Python 클래스(객체)로 깔끔하게 매핑하여 사용할 수 있습니다.
  • SQLModel (FastAPI 조합): FastAPI의 제작자가 만든 SQLModel이나 Peewee 같은 경량 ORM을 활용하면, 복잡한 SQL 쿼리 없이도 마크다운 문서의 CRUD(생성/조회/수정/삭제) 로직을 몇 줄의 Python 코드로 가볍게 구현할 수 있습니다.

🎯 최종 결정: Python (FastAPI)으로 갑니다!

비교 결과, "무료 클라우드에 쉽게 올리고 가볍게 돌린다"는 제 프로젝트의 목표에는 Python이 훨씬 더 잘 들어맞는다는 결론을 내렸습니다.

백엔드 프레임워크로는 초경량이면서도 비동기(Async) 처리가 빠르고, /docs를 통해 API 문서(Swagger UI)를 자동으로 만들어 주는 FastAPI를 사용할 계획입니다.

  • Database: Firebird (Docker)
  • Backend: Python (FastAPI + SQLAlchemy)

📝 마무리 및 다음 이야기

이제 데이터베이스(Firebird)와 백엔드(Python FastAPI)라는 든든한 '엔진'이 모두 갖춰졌습니다!

그렇다면 사용자가 실제로 마크다운 글을 작성하고, 예쁘게 랜더링된 화면을 보며, 클릭 한 번으로 공유 링크를 생성할 "프론트엔드(UI/UX)"는 어떻게 구성해야 할까요?

다음 글에서는 마크다운 에디터의 얼굴이 되어줄 프론트엔드 기술 스택과 UI 구현 방안에 대해 고민해 본 내용을 정리해서 돌아오겠습니다.

차근차근 완성되어 가는 제 프로젝트에 많은 관심과 응원 부탁드립니다!

감사합니다. ^^

Sort:  

Upvoted! Thank you for supporting witness @jswit.

AI 도움으로 컴퓨터 켰을 때 무조건 실행하는 것들 한 번 클릭으로 모두 실행하게 만들어 봤습니다.
자주 사용하는 것들도 만들어 봐야겠어요 ㅎㅎ
UI/UX 구성하는 거 궁금하네요.