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

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)을 위한 프레임워크로 사용합니다.

구축을 고려하는 분들을 위한 조언

이러한 홈 서버 환경을 구축하는 것은 굉장히 재미있고 많은 것을 배울 수 있지만, 몇 가지 단점도 있습니다.

  1. 전기세 증가: 물리적인 서버를 운영하다 보면 상당한 전력 소비가 발생합니다.
  2. 관리 부담: 업데이트, 보안 패치 적용, 장애 대응 등 관리할 것이 많아집니다.
  3. 필요성 검토: 실사용 목적이 아니라면 클라우드 서비스를 활용하는 것이 더 나을 수도 있습니다.

하지만 학습용으로는 최고의 환경을 제공할 수 있기 때문에, DevOps나 서버 관리에 관심이 있다면 한 번쯤 구축해보는 것도 추천합니다!