굳이 좋은 클라우드 서비스 나두고 왜?
항상 클라우드 서비스를 사용하면서 내 갈증은 제한된 리소스였다. 대부분의 클라우드 서비스는 학생 또는 신규 가입자에게 무료 플랜을 제공한다. 하지만 제공되는 리소스는 굉장히 제한적이고, 작은 규모의 클라우드 서비스는 Spring 기반의 서버도 올릴 수 없다. (요청 한 번 하면 OOM으로 죽는다...)
정말 서버만 올릴 것이면 만족할 수 있다. 하지만 그 과정에서 배울 점은 EC2 생성, 간단한 리눅스 명령어 좀 더 나아가 github action으로 ci/cd까지하면 많이 경험했다고 생각한다. 하지만 Jenkins, kubernates과 구성된 서버를 접속할 수 있도록 Proxy를 설정하는 등등을 해보고 싶으면 상상도 할 수 없다.
비용은?
처음 홈랩을 만든다고 했을 때 가장 많이 들은 말이 "그 돈이면 AWS에서 하고싶은가 다 하고도 남는다." 였다. 하지만 2년이고, 3년동안 가능할까? 현재 내 홈랩을 구성하는 인스턴스를 먼저 알아보자.
- Adguard Home (1 cpu, 1Gb RAM) - AWS 1년 비용 무료(free tier)
- K8s control plan (4 cpu, 4Gb RAM) - AWS 1년 비용 2,008,487원
- K8s agent (2 cpu, 16Gb RAM) * 3 - AWS 1년 비용 1,883,589원
- Jenkins (4 cpu, 4Gb RAM) - AWS 1년 비용 2,008,487원
- Reverse Proxy (1 cpu, 1Gb RAM) - AWS 이용 시 불필요
이 정도의 인스턴스 및 서버 구성을 AWS 리소스로 구성한다면 과연 얼마나 들까? AWS 비용 계산기를 이용해 서울 리전에 가장 저렴한 플랜으로 사용하다는 기준으로 1개월 이용한다면 총 500,000원이 매월 사용하게 된다. 2개월만 사용해도 충분히 비용 회수가 가능하다는 점이다.
성능을 낮추면 되지 않을까?
높은 트래픽이 발생하는 서비스를 운영하는 것도 아닌데, 너무 높은 성능을 기준으로 비용 계산을 한 것이 아닌가? 라는 의문도 있을 수 있다. 하지만, 현재 내가 참여 또는 진행하는 프로젝트는 2~3개 정도이며, 이 중에는 시장 반응을 보기 위해 계속 운영되어야 하는 서비스도 있, 더 증가할 수도 있다. 이런 상황에서 낮은 사양은 나에게 큰 걸림돌이다.
그리고 웹 개발자로서 반드시 갖추어야 할 장비는 좋은 키보드도, 성능이 좋은 PC, 해상도 높은 모니터가 아닌 24시간 운영되는 작은 서버라고 생각한다.
그래서 내 홈랩 구성은?
- CPU: Intel i5-1240P
- RAM: 64 Gb RAM DDR4
- OS: Proxmox 8.0-2
기본적인 서버 구성은 다음과 같다.
Reverse proxy를 위한 NGINX
서버를 구성하고 외부에 노출하기 위해서 공유기 설정을 하는 과정에서 각 인스턴스로 연결하기 위해서 포트 포워딩을 활용했다. 하지만 이렇게 하니 공유기 설정에 관리가 번거로워, subdomain을 기준으로 reverse-proxy를 해주기 위한 nginx instance 한대를 두고 사용하고 있다.
K8s control plan 1대, agent 3대
처음 서버를 구성하고 가장 하고 싶었던 구성이다. 인프라에 관심이 많았지만 항상 인프라 구성은 돈이 문제였다. 원하는 구성을 마음대로 하고싶으면 매월 금액을 지불해야하는데, 마치 제 2의 월세를 내는 것 같아서 너무 아깝다고 생각했다.
처음 On-premise 환경으로 k8s를 구성하는 것에 어려움은 있었지만, 공부도 가장 많이 됐던 구성이다.
Jenkins
요즘은 Github action으로 Jenkins를 이용해야했던 기능을 많이 따라할 수 있지만, 인증 정보 관리나 권한 관리 그리고 스크립트 수정 관리에 있어서는 역시 Jenkins에 강점은 여전한 것 같다.
'메모' 카테고리의 다른 글
AWS에 MySQL을 설치하려다 포기한 당신을 위해 (0) | 2023.11.29 |
---|---|
속도와 보안을 한 단계 업그레이드! 새로운 DNS 추가의 완벽 가이드 (0) | 2023.11.27 |
우당탕탕 k8s 기록 (0) | 2023.11.10 |
Type<Challenge[]> #Medium (0) | 2022.02.05 |
Node.js 플랫폼 (0) | 2022.02.04 |