- LegiNote 프로젝트 개발 이야기3 - Request in Go
- Go 언어를 활용하여 국회 OpenAPI에서 법률 정보를 가져오는 LegiNote 프로젝트 개발 과정을 소개합니다. HTTP 요청 및 데이터 구조 정의 등을 다룹니다.
안녕하세요 StatPan 입니다.
LegiNote 사이드 프로젝트의 개발기를 쓰고 있습니다.
이전편은 다음의 링크를 참고해주세요.
LegiNote의 4번째 개발기, 이전과는 결이 살짝 다른, 인프라 구성에 관한 이야기를 해볼까 합니다.
서비스 개발을 위해서는 역시 서비스를 돌릴 서버 자원이 필요합니다.
물론 경험만 하고 서비스를 계속 운영할게 아니라면 개인이 가진 PC나, 여러 회사에서 제공하는 무료티어 서비스들을 고려해볼 수 있습니다.
AWS, Azure, GCP 등 메이저 클라우드에서 제공하는 무료티어를 활용해서 일시적으로 사용할 수 있고, 또는 카페24, 가비아 등의 호스팅 서비스를 고려해볼 수도 있습니다.
그중에서 제가 선택한 것은 Oracle Cloud에 Free tier 였습니다. 가히 클라우드 중 최고의 무료티어 정책을 가지고 있다고 볼 수 있죠.
정리하자면
OCPU 4, RAM 24GB, SDD 200GB의 vm을 서비스에 풀타임으로 이용할 수 있습니다(트래픽도 무제한은 아니지만 이거 다 채울정도면 이미 유료 서비스 해야할 수준)
다만, 이 vm을 사용하기 위해서는 악명 높은 오라클 카드 등록 시험을 통과해야 합니다.
이렇게 24시간 무중단 VM을 1개 획득 하였습니다.
여전히 부족하다 느껴지는 자원
개발을 하다보면 1개의 노드 만으론 부족합니다.
제가 가진 경험안에서, 개발과 운영을 구분해서 배포할 수 있는 자원이 필요하기 때문이죠.
아쉽게도 오라클 프리티어는 1개만(정석일 때) 사용할 수 있기 때문에, 무중단 VM을 더 획득 하고 싶었습니다.
VM의 대안, 미니 PC
위 오라클 프리티어 서비스와 대등한 스펙이면서, 동시에 24시간 무중단으로 운영하기 위해서는 어느정도의 퍼포먼스와 함께 저전력으로, 계속해서 운영할 서버가 필요했습니다.
이 분야의 정보에 대해서는 검색하면서 흘러가다보니 가장 큰도움을 받은 곳은 DC갤러리 였습니다.
n100, eqr6, ser8 등의 후보군 중에서 저는 위 VM 스펙과 비슷한 스펙을 원했기 때문에 eqr6를 선택했고, 굉장히 저렴한 가격에 서버를 구매했습니다.
베어본 eqr6 24만원
SSD 256GB 2.2만
ram 8GB * 2 1.8만
총 28만원
비슷한 스펙의 VM을 약 1-2년 무중단으로 서비스한다고 생각하면 충분히 뽑을 수 있는 돈이라고 생각하고 구매를 했습니다.
여기까지는 수월했습니다만...
문제의 시작
잊을만 해야 오는 배송
네, 이 미니 PC들은 요즘 같이 하루 이틀이면 배송 오는 시대에, 정말 오지 않습니다.
배송을 받기 위한 2주의 시간은 정말이지 길고 긴 시간이었고, 중국에 당해버렸나? 싶은 생각이 들 때 쯤 만나게 되었습니다.
물론 이런 PC 세팅 경험이 없으신 분들은 그 기간 동안 미니 PC 갤러리 에 많은 도움이 되는 글을 읽으면서 기다리시는 것도 방법이 될 것 같습니다.
(동봉된 USB 드라이버 외에 부팅 디스크를 준비한다거나, 함께 설치할 드라이버들을 준비한다거나 등등)
미니 PC 조립
네, 미니 PC 조립은 또 색다른 경험이었습니다. 저는 제 데스크톱을 스스로 조립한 적이 있어서, 쉽게할거라 생각했는데 미니 PC는 자그마한 본체안에 다양한 부품들이 있어서 생각보다 조립에 어려움을 겪기도 했고, 특히 나사 빠진거 다시 빼내는게 또 어려움의 한 포인트 입니다.
그 나사를 빼기 위해서, 전원부를 살짝 분해했는데, 느슨하게 결합했더니 살짝만 본체가 흔들려도 전원이 꺼지는 등의 재밌는 사건이 많이 생기곤 했습니다.
지나고 나니 추억으로 위장한 고통이네요
미니 PC의 설정
이번엔 BIOS와의 전쟁이었습니다. ubuntu를 설치하고 나니, 기본으로 vram이 8기가를 가져가서 메모리 사용량이 8기가 밖에 없더군요.
저는 서버로 활용할 예정이라 vram이 거의 필요 없었기 때문에, 이걸 처리하기 위해서 구식 바이오스 메뉴에서 해당 기능을 찾느라 고생을 좀 했습니다. 바이오스 버전부터가 낮아서 생각보다 인터넷에 나와있는 가이드 메뉴와 맞는게 잘 없었습니다.
그러던 와중에 어느 알 수 없는 유튜브의 흔적을 찾아 간신히 해결을 할 수 있었습니다.
이 자리를 빌어 감사드립니다. 이름 모를 개발자님...
홈 네트워크 세팅
저는 SK 인터넷을 활용하고 있는데, 사실 설치 할 때 제가 없었다 보니 구체적으로 어떻게 설치를 했는지 몰랐고, 주로 KT 인터넷을 썼던 경험만 가지고 있다보니, 가볍게 생각을 했었습니다.
즉 1개의 모뎀에서 뻗어나온 공유기를 사용하는 것으로만 생각을 했었습니다.
그러나, SK는 독특하게도 공인 IP와 직결된 모뎀이 따로 1개가 존재하고, 거실과 같은 위치에 두는 모뎀(공유기)가 별도로 존재하더군요.
처음에는 이걸 모르고 거실 공유기와, 방의 공유기가 각각 대역을 자꾸 다르게 잡아서 방 공유기가 문제 있는 줄 알고 애꿏은 초기화를 몇번이나 했는지 모르겠습니다.
그러다 검색 끝에 1개 더 있는 공유기의 존재를 알게 되었고, 비밀의 공간에 숨겨져 있는 모뎀을 발견하게 되었습니다.
약 하루의 고통을 복수하기 위해서, 과감하게 공인 IP를 받은 모뎀을 바로 브릿지화를 해주었고, 이제 내부 SK 공유기를 NAT로 구성하여 모든 네트워크를 통제하려고 했는데, 또 쉽게 해결하면 재미없으니까 조금의 변수를 주더군요.
아직 이유는 알 수 없지만, 결론적으로 저는 공인 IP를 2개 가지게 되었습니다
서비스를 위해서 별도의 IP를 가지게 된 것에 대해서는 개인적으로 만족스러운 결과긴 합니다만 타 인터넷 회사와는 사뭇 다른 이런 서비스 정신이 아직 적응이 안되는 중입니다.
SK인터넷을 쓰면서 홈 네트워크를 구성하실 분들이라면, 위 주요한 사항들을 인지하고 가시면 큰 어려움 없이 해결을 하실 수 있을 것 같습니다.
DDNS와 DNS, 포트포워딩
사실 Oracle VM을 추가로 얻었으면 하지 않아도 되었을 작업이라 생각합니다만, 덕분에 좋은 경험을 한 것 같습니다.
가정용 IP는 주로 동적인 IP를 할당 받기 때문에, 단순히 DNS 서버에 IP를 매핑해두면, 공유기의 리셋과 함께 매번 매핑 작업을 병행해야 할지도 모릅니다.
이러한 상황을 해결하기 위해서, 공유기에서 자체적으로 DDNS 서비스를 제공해주기도 하는데요.
SK 공유기는 이러한 부분을 직접 제공해주진 않고, 제3자의 서비스를 이용하게 권장을 하는 것 같습니다.
저는 다행히 ASUS 공유기를 활용하기 때문에, 특별히 서비스를 이용하지 않고 ASUS 공유기의 관리자 화면에 내장된 DDNS 기능을 사용하였고, DNS 서버에 매핑을 해서 이러한 문제를 해결했습니다.
이 부분은 제가 기존에 도메인을 구입하면서 DNS를 사용한 경험이 있어서 다행히 수월하게 작업할 수 있었던 것 같습니다.
문제 해결 후 느낀 점
VM을 24시간 굴릴 비용을 측정만 하던 시점에서는 비용이 꽤 크게 느껴질 수 있는데, 이러한 초기 세팅에 대한 금액이나, 시간적인 소모를 생각하면 왜 클라우드 서비스가 각광 받는지 어느정도는 알 것 같다는 생각을 했습니다.
그럼에도 수익이 나지 않는 프로젝트의 지속적인 운용을 위해서, 그리고 개인적인 학습을 위해서 위 인프라를 지속적으로 발전시킬 계획입니다.
사실 아직 까지는 급하게 스케일업을 해야할 유저 자체가 없기 때문이죠.
앞으로는 위 프로젝트를 지탱할 인프라에 관한 내용도 게시물에 포함이 될 것 같습니다.
저와 비슷한 고민을 하시거나 계획하시는 분들이 있다면 언제든지 도와드리겠습니다.
이상 StatPan 이었습니다!
댓글0