- PY4E
- 네이버부스트캠프
- 인공지능기초다지기
- 기초다지기
- Django
- 정보처리기사
- 데이터 분석 기반 에너지 운영 관리자 양성 및 취업과정
- 오라클
- 데이터베이스
- DB
- 빅분기
- 이것이 취업을 위한 코딩테스트다 with 파이썬
- AI 플랫폼을 활용한 데이터 분석
- 빅데이터 분석 기반 에너지 운영 관리자 양성 및 취업과정
- [멀티잇]데이터 시각화&분석 취업캠프(Python)
- Ai
- 이기적
- 파이썬
- boostcoures
- SQL
- 코딩테스트
- python
- 빅데이터분석기사
- boostcourse
- 프로그래머스
- r
- 부스트코스
- Oracle
- 코딩테스트 python
- unsub
- Today
- Total
매일공부
작은 사내 도구, 기존 시스템에 붙일까 독립시킬까 — 판단 기준 정리 본문
사내에 이미 운영 중인 시스템(Django + MariaDB)이 있고, 새로 처리해야 할 작은 업무(이메일 발송 + 수신거부 관리)가 생겼을 때 "기존 프로젝트에 기능을 얹을지, 완전히 새 프로젝트로 뗄지" 고민한 과정을 정리한다.
처음 계획: 완전 독립 프로젝트
- 별도 서브도메인, 별도 DB, 별도 Flask 앱
- 이유: 기존 시스템은 특정 부서 전용 도구라, 성격이 다른 기능(전사 마케팅 발송)을 얹으면 어색함
중간에 바뀐 생각: 기존 시스템에 흡수
- 로그인 인증, DB, 배포 인프라가 이미 갖춰져 있어서 재사용하면 개발 비용이 줄어듦
- "코드/인프라는 통합하되 화면은 분리"하면 이질감 없이 붙일 수 있다고 판단
- Django의 다중 DB 라우팅 기능(DATABASE_ROUTERS)까지 검토
결국 다시 독립으로 돌아온 이유
논의를 진행하다 보니 다음 질문들이 계속 걸렸다:
- 이 기능이 정말 이 시스템의 일부가 맞는가? 기존 시스템은 특정 업무 전용 도구인데, 새 기능은 전사 범위였다. "SW 전용 시스템에 회사 전체 기능을 얹는다"는 구조 자체가 계층이 거꾸로였다.
- 이 기능이 임시(다리) 성격인가, 영구 정착할 것인가? 사내에 이미 더 큰 그림의 신규 플랫폼이 별도로 구축되고 있었고, 지금 만드는 기능은 그 플랫폼이 완성되면 흡수되어 사라질 가능성이 높았다.
- 어차피 임시라면, 통합에 드는 복잡성(다중 DB 라우팅, 권한 그룹 분리, 화면 분리)을 감수할 가치가 있는가?
3번 질문에 답하면서 결론이 명확해졌다 — 임시로 확정된 것이라면 최대한 단순하게 가는 게 맞다. 통합에 들이는 설계 비용은 나중에 흡수/폐기될 때 아무 의미가 없기 때문이다.
최종 판단 기준 (정리)
같은 고민이 반복될 걸 대비해 판단 기준을 남겨둔다.
질문 통합 쪽으로 기우는 답 독립 쪽으로 기우는 답
| 이 기능이 기존 시스템과 같은 사용자층/업무 범주인가? | 예 | 아니오 (다른 부서/전사 범위) |
| 영구적으로 이 시스템의 일부가 될 것인가? | 예 | 아니오 (임시 다리, 추후 다른 시스템에 흡수 예정) |
| 통합 시 필요한 추가 설계(다중 DB, 권한 분리 등)가 단순한가? | 예 | 아니오 (라우터, 그룹 분리 등 복잡도 증가) |
| 인수인계/유지보수 관점에서 어느 쪽이 설명하기 쉬운가? | 통합 | 독립 |
특히 마지막 질문이 실무적으로 크게 작용했다. 퇴사/인수인계를 앞둔 상황에서는 "이 도구가 왜 여기 있는지"를 다음 사람이 짧게 이해할 수 있는 구조가 기술적 우아함보다 중요했다.
곁가지 판단: 언어/프레임워크 선택
기존 시스템이 Django였지만, 다음 이유로 새 프로젝트는 Flask로 결정했다:
- 스코프가 작다 (화면 5개 내외) — Django의 강점(Admin 자동화, 복잡한 앱 간 관계)을 살릴 데가 없음
- 처음 써보는 프레임워크라 학습 목적도 있었음
- 동료가 별도로 Node.js/NestJS 기반 신규 플랫폼을 구축 중이라, "그쪽으로 언젠가 흡수될 것"을 고려하면 지금 Python 새 프레임워크에 깊이 투자하는 것보다 가볍게 가는 게 맞다고 판단
요약
작은 부속 기능을 만들 때는 "기술적으로 통합 가능한가"보다 "이게 영구적인 물건인가, 임시 다리인가"를 먼저 정하는 게 설계 방향을 훨씬 빨리 잡아준다. 임시라면 통합의 복잡성을 감수할 필요가 없고, 오히려 독립시켜서 나중에 통째로 옮기거나 버리기 쉽게 만드는 게 낫다.
다만 "임시"가 "허술해도 된다"는 뜻은 아니었다. 실제로 만들면서 캠페인 발송 전 테스트 승인 절차, 발송 이력 기록, 장애 격리 같은 최소한의 안전장치는 필요하다는 게 드러났고 — 이 부분은 다음 글들에서 다룬다. 대신 그 이상의 기능 확장(개별 재발송, CSV 내보내기 등)은 의도적으로 손대지 않았다. 정식 시스템과의 통합/분리 여부는 여전히 미정이라, 지금 만드는 게 나중에 그대로 흡수되거나 버려질 걸 감안하면 "필요한 안전장치는 갖추되, 그 이상은 욕심내지 않는다"가 이 프로젝트 전체를 관통한 기준이었다.
이 시리즈의 다른 글
이 판단을 바탕으로 실제 구현한 과정은 이어지는 글들에서 다룬다.
- (이 글) 독립시킬지 통합할지 판단한 과정
- 프로젝트 개요와 구조
- 이메일 캠페인 DB 설계 노트
- Flask 첫 프로젝트에서 마주친 삽질들
- 캠페인 상태 머신: 테스트 없이 실제 메일이 나가지 않도록 만들기
- HTML 이메일 렌더링 트러블슈팅
- 서로 다른 두 고객 데이터소스를 하나의 구독자 목록으로 통합하기
- 발송 이력과 장애 격리
- Docker + Synology NAS 배포
'IT > 작업기록' 카테고리의 다른 글
| 이메일 캠페인 발송 시스템 DB 설계 노트 (0) | 2026.08.31 |
|---|---|
| 사내용 이메일 캠페인 관리 툴을 Flask로 직접 만든 이유와 구조 (0) | 2026.08.31 |
| [NAS 트러블슈팅] Log Center 종료 실패 에러, 원인은 예약된 PowerOff Task였다 (0) | 2026.08.31 |
| [SSH] 처음부터 설정하기 — 키 생성부터 접속까지 (1) | 2026.08.28 |
| [MariaDB] 전혀 다른 작업 중에 우연히 발견한 버전 불일치 문제 (0) | 2026.08.28 |