👨🏻‍💻 개발자 제이의 이야기

홈서버(?)에서 서빙하던 서비스 클라우드 이전 썰 (feat. OPGC, AWS Lightsail)

피트웨어 제이 (FitwareJay) 2022. 10. 3. 20:19

재밌어 보이죠?!!ㅋㅋㅋ

안녕하세요! 개발자 Jay입니다! 오늘은 약간 재미난 썰(이라고 쓰고 날벼락 맞은 썰 이라고 읽는다...)을 가지고 왔습니다ㅎㅎ

 

2년 전쯤 [Server] 안쓰는 노트북으로 개인서버(Ubuntu) 만들기 💻 라는 글을 쓴 적이 있었습니다. 집에서 버리려다가 만 노트북을 ubuntu server로 만들어서 사용을 했습니다. 덕분에 이 서버에서 토이 프로젝트도 서빙하고 여러 가지 실험도 할 수 있었습니다.

 

엊그제 까지만 해도(?) OPGC라는 서비스를 서빙하고 있었죠 ㅋㅋ

 

 

2022년  9월 31일 오후 1시 사건의 발단


 

백수의 하루

사건은... 평화로운 백수생활을 즐기면서 꿀잠자고 있던 2022년 9월 30일 오후 1시에 일어났습니다... 갑자기 탕! 하는 큰소리와 함께 건물 외벽이 울리는 겁니다...

 

순간 무슨 사고라도 밖에 터졌나 했는데 너무 조용하고..."뭐지?" 하다가 벽을 보니까 뭔가 끊어진 선이 하나... 보이더라고요. 3초간 머엉~ 하고 생각하다가 랜선인가? 하고 생각했는데 ㅋㅋㅋㅋ 서버가 죽었다고 슬랙 알림이 오기 시작했습니다ㅋㅋㅋㅋㅋ

 

ㅋㅋㅋ 가운데 길게 떨어진게 우리집 랜선

어이가 없어서 황급히 밖에 나가보니 랜선 하나가 끊어져 있는게 보이더라고요 ㅋㅋㅋㅋㅋ 아니 살다 살다 ㅋㅋㅋ 탑차 같은게 지나가다가 저희 집 랜선을 걸고 가서 끊어진 걸로 추측이 됩니다ㅠㅠ

 

요렇게 든든하게 사용하던 홈서버인데....랜선 끊어지니 무용지물
readme에 위 빨간박스 안에 뱃지로 제공해주는 OPGC

뭐 당장 인터넷이 안되는건 상관없는데 유저들이 사용하고 있는 OPGC에 장애가 생기는게 걱정이었습니다. OPGC에서는 개발자 랭킹을 github 뱃지(?)로 제공하고 있어서 서비스 장애가 나면 깃헙 readme에 엑박(엑스박스)떠서 보기 좋지 않기 때문입니다.

 

너무 황당해서 생코에 바로 글을 올렸습니다 ㅋㅋㅋ

유저가 많지는 않지만 실제로 유저들이 사용하는 서비스이기 때문에 빨리 복구를 해야겠다는 생각뿐이었습니다. 안그래도 맨날 이사 가거나 집 구조 바꿀 때마다 인터넷이 끊기면 서비스 장애가 돼서 클라우드로 이전을 해야겠다고 생각했는데 ㅋㅋㅋㅋ 강제로 그 시기가 찾아왔습니다.

 

 

클라우드로의 이전


이전 직장에서 동료들이 AWS Lightsail로 토이프로젝트를 서빙하고 있고 값이 싸다고 알려준 적이 있어서 바로 AWS로그인해서 Lightsail페이지로 들어갔습니다.

클릭 몇번으로 인스턴스를 생성할 수 있다

Lightsail은 클릭 몇번으로 원하는 사양과 목적에 맞는 서버를 생성할 수 있습니다. 저는 홈서버와 비슷하게 하나에 서버에 nginx, mysql, redis, django application을 구성할 거라 ubuntu 20.04 LTS로 선택했습니다. 서버 사양은 홈서버와 비슷하게 20달러짜리로 하고 싶었는데 10달러짜리가 3개월 무료라서 10달러짜리를 선택했습니다.

 

어차피 트래픽이 그렇게 많지도 않고 고사양 스펙을 돌리는것도 아니라서 괜찮을 거라고 생각했습니다. (+ 고정아이피 사용)

 

서버를 생성하고 기존 홈서버에서 몇가지 파일들과 DB data를 옮기기 위해 USB를 사용했습니다.

 

USB 마운트 해서 파일 복사하는 과정

탑차가 저희집 랜선을 끊고 간 덕분에 usb 마운트 해서 파일 옮기는 법도 알게 되었네요 ㅎㅎ 일단 파일들을 옮기고 기존 홈서버와 동일하게 환경 세팅을 했습니다.

 

nginx, mysql, redis를 설치하고 원래 사용하던 fabfile을 통해 init 배포를 시작했습니다. fabfile은 fabric이라는 파이썬 라이브러리로 간단하게 배포를 할 수 있는 파일을 말합니다. 

https://jay-ji.tistory.com/38?category=828550 

 

local 개발환경 세팅부터 배포까지 - 3부(Fabric)

안녕하세요! 운동하는 개발자 Jay입니다. 오늘은 대망의 3부 배포에 대해 알아 보겠습니다. 배포를 위해 Fabric 이라는 python 라이브러리를 사용하겠습니다. GitHub에서 프로젝트를 clone 받아서 실행(r

jay-ji.tistory.com

 

사실 기존 홈서버와 다른점이 클라우드라는 점만 빼면 동일했기 때문에 특별히 이슈는 없었고 OPGC의 클라우드 이전은 무사히 마칠 수 있었습니다.

 

클라우드 서비스 이전 과정 요약

  1. ubuntu 서버 생성
  2. nginx, mysql, redis 설치
  3. djagno application 배포 및 gunicorn 실행, nginx <-> gunicorn 연결
  4. 프론트(react) build 및 nginx에 index경로 연결
  5. 도메인 서비스(GoDaddy) 가서 A레코드 IP 주소 변경
  6. SSL 인증서 설치
  7. 서비스 동작 확인

 

마치며


긍정회로 돌리

세상 황당한 일을 겪었지만 덕분에 많은걸 얻은 것 같습니다 (긍정 회로 돌리기)

 

  1. 클라우드로 서비스 이전 (이제 이사가거나 두꺼비집 내려가서 서비스 장애 나는 불상사 없어짐)
  2. ubuntu usb 마운트 하는법 습득
  3. 블로그 컨텐츠 획득
  4. 서버 배포과정 한 번 더 복습

여러분들도 토이프로젝트 하신다면 AWS Lightsail 한 번 이용해보시길 바랍니다. 값이 싸서 이것저것 해보기 좋은 것 같아요! 인터넷이 복구되면 기존에 사용하던 서버는 좀 자유롭게 이상한짓(?)을 해보는 테스트 서버로 사용해야겠네요 ㅋㅋ

 

그럼 오늘도 즐거운 코딩 하시길 바래요!

 

참고자료

Ubuntu usb mount/unmount

 

[Ubuntu] USB 마운트(mount)/언마운트(unmount) 하는 방법

안녕하세요. 메이플입니다. 최근에 라즈베리파이에 우분투 OS를 설치해서 작업 중인데, USB를 사용하는 방법을 잘 모르겠더라고요. 그래서 열심히 검색해봤는데.. 제가 원하는 딱! 정리된 정보가

mapled.tistory.com

https://mingg123.tistory.com/88

 

[Ubuntu] MySql 재설치, 제거부터 설치까지

mySql을 로컬에 깔아야 할 일이 생겼다. 몇 번이나 삭제, 수정을 하면서 그냥 포스팅 하려고한다. 재설치 mysql관련된 라이브러리 까지 모두 깔끔하게 삭제한다. sudo apt-get remove --purge mysql* 혹여나

mingg123.tistory.com

https://wikidocs.net/6601

 

03) Nginx, Gunicorn 배포

[TOC] # 시스템 구성 예시 * 우분투 16.04 * Django * nginx * Gunicorn 다음 설치 예제는 실제 물리서버가 아닌 vultr.com의 가상 ...

wikidocs.net

우분투 nignx 무료 ssl 인증서 설치하기

 

우분투 리눅스에 Nginx 무료 HTTPS 인증서 설치하기

이 튜토리얼은 우분투 리눅스에서 무료 SSL을 암호화하여 Nginx 무료 HTTPS 인증서를 설치하는 데 필요한 모든 단계를 보여줍니다.

itexpert.tips

https://joonyon.tistory.com/entry/EC2%EC%97%90%EC%84%9C-EC2%EB%A1%9C-ssh-public-key-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0PEM-File-%EC%9D%B4%EC%9A%A9

 

EC2에서 EC2로 ssh public key 배포하기(PEM File 이용)

AWS EC2에 접근하기 위해서는 PEM File을 이용하게 되는데, 이 때문에 EC2 끼리 패스워드 없이 접속하기 위해서 ssh-keygen 후 public key를 배포하는데 ssh-copy-id 를 이용 할 수가 없다. 이러한 문제를 해결

joonyon.tistory.com

https://chamshna.tistory.com/3

 

PEM 키를 이용한 SSH 원격 접속

[목표] 터미널 창에서 pem 키를 이용하여 ssh 원격접속 1. 키페어 파일에 권한부여 (Linux의 경우) - OS마다 차이가 있지만 대표적인 예로 MacOS는 파일 권한이 400(파일 소유권자만 읽기 가능)이 아닌 경

chamshna.tistory.com