Geek한 개발자의 재택근무 개발 환경

개인적으로 집에서 NAS와 Home Server를 활용하여 다양한 서비스를 운영하고 있습니다. 용도에 따라 실제 서비스로 운영하거나 학습 및 PoC 용도로 활용하고 있으며, 불필요한 인프라도 많아서 전기세가 많이 나옵니다. 😂 따라서 실사용보다는 연습 삼아 구축하는 것을 추천합니다. 😅
최근 Excalidraw를 이용해 다이어그램을 정리하면서, 운영 중인 인프라를 한눈에 볼 수 있도록 정리해 보았습니다.
전체적인 구조는 다음과 같습니다.
VPN
- Tailscale (개인용): 안전한 원격 접속을 위해 사용하고 있습니다.
NAS
- Synology 415+: 데이터 저장과 Docker 컨테이너 운영을 위해 활용합니다.
Infra
- VMware: Kubernetes Node 가상 머신(VM) 관리를 위해 사용합니다.
- Kubernetes: 컨테이너 오케스트레이션을 위해 구축했습니다.
- Ubuntu 24.04: 운영체제로 사용 중입니다.
- Cloudflare: 외부 접속 및 보안 강화를 위해 설정하였습니다.
CI/CD
- ArgoCD: GitOps 방식으로 애플리케이션을 배포하고 관리합니다.
- Prometheus: 시스템 모니터링을 위해 활용합니다.
- Nginx: 리버스 프록시 및 웹서버 용도로 사용 중입니다.
- Jenkins: CI/CD 파이프라인을 구축하기 위해 활용합니다.
- Loki: 로그 수집 및 분석을 위해 설정했습니다.
- Grafana: 시각화를 통해 모니터링 데이터를 확인합니다.
- Gogs: 개인용 Git 저장소로 사용 중입니다.
Database
- MySQL: 다양한 애플리케이션의 데이터 저장을 위해 사용합니다.
- PostgreSQL: MySQL과 함께 사용하며, 일부 프로젝트에서 활용합니다.
- Redis: 캐시서비스나 빠른 IO가 필요한 경우 사용하고 있습니다.
Programming Language
- Go: 백엔드 개발 및 API 구축에 사용합니다.
- Spring Boot: 백엔드 개발 및 API 구축에 활용합니다.
- Next.js: 프론트엔드 개발 및 SSR(Server Side Rendering)을 위한 프레임워크로 사용합니다.
구축을 고려하는 분들을 위한 조언
이러한 홈 서버 환경을 구축하는 것은 굉장히 재미있고 많은 것을 배울 수 있지만, 몇 가지 단점도 있습니다.
- 전기세 증가: 물리적인 서버를 운영하다 보면 상당한 전력 소비가 발생합니다.
- 관리 부담: 업데이트, 보안 패치 적용, 장애 대응 등 관리할 것이 많아집니다.
- 필요성 검토: 실사용 목적이 아니라면 클라우드 서비스를 활용하는 것이 더 나을 수도 있습니다.
하지만 학습용으로는 최고의 환경을 제공할 수 있기 때문에, DevOps나 서버 관리에 관심이 있다면 한 번쯤 구축해보는 것도 추천합니다!