그동안 커뮤니티랑 기타 자잘한 서비스를 운영하면서 코로케이션 쿼터랙정도 임대하여 자가 서버 두고 사용했는데요,
최근에 다른 작업으로 급히 3대정도가 필요하여 기존에 코로케이션 사용하던 업체에서 서버호스팅 3대를 신청했습니다.
처음에야 부하가 없어서 잘 돌아갔는데, 조금 부하가 생기니(특히 디스크 IO가 조금 있는 서비스였습니다) 디스크 사용률이 100%를 찍고 큐가 잔뜩 쌓여서 서비스가 멈추는 현상이 굉장히 잦아졌더라구요
(후에 업체에 물어보니 한 7~8년된 중고 SSD 돌려막기 하는걸 보고 엄청 충격받았습니다. 것도 재생낸드 수준의 초저가형 브랜드의...)
조금만 멈춰도 민감했던 서비스라 이참에 눈팅하면서 봤던 오라클 클라우드로 넘어가볼까 계획하고 준비했습니다.
사실 오라클 말고도 Azure나 AWS도 보긴 했는데, AWS 가격은 사악하고 Azure도 3년 약정 걸어야 나올 가격이 오라클은 무약정으로도 가능하더라구요
그것 말고도 대부분 아시다시피 10TB O/B 트래픽이나 A1(Arm) 인스턴스도 덤으로 쓸 수 있는 장점이 있어 오라클로 골라 인프라 구성을 시작했습니다.
처음부터 유상 인스턴스를 사용할 계획이었기에 가입하자마자 Paid 계정으로 업그레이드를 시도하는데...
카드 등록이 죽어라 안됩니다. 가입할 때 인증은 되는데 계정 업그레이드시에 결제수단 등록이 안됩니다.
브라우저도 바꿔보고 이것저것 해봐도 안되고, 브라우저 콘솔에는 CORS 관련 이슈만 잔뜩 뜨길래 결국 2시간 삽질하고 직접 디버그...하며 결제수단 등록에 성공합니다. (window.parent.postMessage 관련 이슈여서 보내는 데이터를 그냥 직접 부모창에서 쏴줬습니다)
타 클라우드 업체와는 다르게 업그레이드가 바로 되는게 아니라 검증 작업이 있어 4~5시간 소요된 것 같습니다.
이 시간 사이에는 그냥 무료계정처럼의 서비스만 이용할 수 있어요.
그 와중에도 기존 서비스에선 모니터링 알림이 계속 울려대서 계속 신경쓰이고..
계정 업그레이드 완료되었다는 메일을 수신하고 부랴부랴 인프라 구성에 들어갑니다.
요금 계산기에서는 기본적으로 X7의 인텔 기반 인스턴스를 알려주는데, E3/E4의 AMD Epyc 기반 인스턴스가 훨씬 저렴합니다. 성능표를 참고하여 E4여도 괜찮다 판단하여 E4 인스턴스를 2개 띄우고 블록스토리지도 생성하고 이것저것 설정합니다.
중간에 빠뜨린게, 우선은 A1 인스턴스 무료의 달콤한 유혹이 있어 이를 사용해보고자 2일정도 열심히 생성 시도를 했었는데, 무참히 가용공간 부족으로 생성이 안되었었는데요(Korea Central), 저렇게 인스턴스 2개 띄우고 혹시? 하고 시도했는데 바로 생성이 되덥니다.
우연히 그 시간에 잠시 여유가 생겼던 것인지, 아니면 유료 계정으로 올리고 돈 좀 쓰니 풀린건지 그건 오라클만 알겠죠?
CPU나 메모리별로 과금하는 구조는 생각보다 마음에 들었습니다.
타 업체는 c5a.xlarge의 경우 4Core 8GB 이런식으로 미리 정형화된(물론 상품들이 그만큼 다양하게 준비는 되어있지만) 인스턴스만 구비되어 있다면, 오라클은 그냥 그때그때 필요한 코어랑 메모리만 넣으면 바로 생성됩니다.
다만 블록스토리지의 경우 요금 계산이 조금 힘들었습니다.
계산기에 있는 기가바이트당 성능 지표?인가 이 항목이(아마 VPU로 추정되는) 무엇인지 명확치가 않습니다.
하루 넘게 쓰고 있는 지금도 사실 잘 모르겠습니다. 그냥 청구항목 보면서 추정하고 있을 뿐입니다.
그런데 생성시 25k IOPS 제한이 있던 사양(1TB, 10VPU)으로 만들었는데 모니터링을 해보면 27~28k까지는 나오는 것 같습니다. 속도 제한도 480MB/s라고 되어있긴 한데 조금 더 나오는 것 같기도 하구요.
VCN(aws의 경우 VPC같은), 가상클라우드 네트워크의 경우 AWS의 SG와는 다르게 여기서만 포트를 열어주면 끝나는게 아니고 인스턴스 내부에서도 iptables에서 또 열어줘야 하는 문제가 있었습니다. (Ubuntu 20.04 이미지 기준)
이것도 몇 시간 삽질해서야 발견했던거라 정말... 인스턴스간 통신은 해야하는데 죽어라 안되고 머리털 다 뽑히는줄 알았네요
그래서 요렇게 간단히 서비스 운영할 때 필요한 정도까지 인프라 구축을 간단히 해봤습니다.
Azure나 AWS를 조금씩 깔짝거려봤던 경험이 있어서 그렇게까지 어렵진 않았지만 몇몇 부분의 모호한 표현(특히 번역 이슈가 굉장히 많습니다)과 매뉴얼이 아직 영문으로만 제공되는 것, 또 문서에는 USD 기준인데 정작 서비스엔 SGD 기준으로 여러차례 헷갈리게 만드는 것들은 아직도 적응이 안되네요
그 외 UTC 기본 표시 고정 등 편의성은 조금 불편하긴 합니다.
다만 그걸 뛰어넘는 유연성과 가격은 이정도 불편함은 충분히 감내할 수 있을 정도라고 생각합니다.
저처럼 유료까진 아니어도 무료에서도 충분히 양질의 인스턴스를 제공하고 있으니 아직도 안써보신 분들은 무료 인스턴스정도만 생성해서 사용해보셔도 괜찮지 않을까 싶습니다.
한 시간 단위로 청구된 비용을 아래에 올려보니 참고가 되셨으면 좋겠습니다.
101-104: 50GB의 부팅 볼륨 -> 상시 무료 적격 대상 (200GB까지, 마지막 행 tags/orci-cloud.free-tier-retained TRUE)
105, 108: 512GB 10VPU 블록 스토리지 Perfomance Units
106-107: 1TB 10VPU 블록 스토리지 Performance Units
109, 112: 512GB 블록 스토리지
110-111: 1TB 블록 스토리지
113-116: 상시 무료 적격 A1(Arm) 인스턴스 2개, 각 2Core 12GB, 두 개 합쳐 무료 상한 4Core 24GB
117-118: E4 인스턴스 메모리, 각 16GB, 8GB
119-120: E4 인스턴스 OCPU, 각 4Core, 2Core
121-124: 아웃바운드 트래픽, 10TB까지 상시 무료 적격
대기업 클라우드는 비용 계산하기가 복잡하지요. 이것저것 쓰다 보면 얼마나 비싸지는지 쉽게 알아채지 못하도록 하려고 일부러 저렇게 자잘하게 쪼개 놓은 게 아닐까 하는 생각이 들 정도입니다. 물론 미리 정확히 알아보고 사용한다면 서프라이즈는 없겠지만, 화폐 단위 자체가 다른 것은 그냥 이 양반들이 생각이 없다고밖에는...
O/S 방화벽은 솔직히 왜 이중으로 세팅해 놨는지 모르겠습니다. 클라우드 UI나 API를 사용해서 포트를 열더라도 서버 내에서 자동으로 열리지 않는다면, 모든 부분을 클라우드 플랫폼에서 컨트롤할 수 있도록 한다는 가장 기본적인 원칙에 어긋나잖아요. 기본 세팅된 룰을 보면 자기네 내부 서비스용 규칙도 쓸데없이 많습니다. 그걸 그대로 유지하지 않으면 뭐가 안 될지 모르니까 건드리기 불안하지요. AWS는 서버 내에 그런 규칙들을 따로 세팅하지 않아도 잘 돌아가거든요? 그냥 오라클 클라우드 네트워크 구조가 쓸데없이 복잡한 것이 아닌가 의심이 됩니다.
결론: AWS 따라쟁이는 세상에 널렸지만, AWS보다 잘 만들어진 것은 아직 본 적이 없습니다. 대부분은 가성비로 승부할 뿐이지요.