Dev Log
수정·

[SNS 개발] Oracle Cloud 이용과 발생한 DNS 문제

by Dohoon Kim · 25년 03월 04일 13:45:54

Oracle Cloud 이용과 발생한 DNS 문제

마이크로 서비스 구조로 서비스를 전부 구성하고 라즈베리파이4 8GB 8대 로 구성한 클러스터에서 서비스가 정상 동작하는 것을 확인하였다. 그런데 최근에 이사를 가야할 일도 있고 해서 프로덕션 서비스를 집에서 돌린다는 것은 말이 안되는 것 같아서 Oracle Cloud의 프리티어에서 싱글노드 쿠버네티스 테스트 서버를 구축해서 서비스를 옮겼다.

테스트 서버 자체는 정상적으로 동작하였다.

다만, 현재 그룹의 썸네일 등을 서빙하는 미디어 서버를 직접 Nginx 로 돌리고 있는 상황인데, 클라우드의 CDN을 이용하려고 시도를 했다.

AWS의 경우 S3 에 스태틱 파일을 올리고, Cloud Flare 이용하여 해당 S3 버킷을 오리진으로 지정하여 파일을 서빙하는것이 가능했다.

Oracle Cloud의 경우에도 Oracle Object Storage 라고 하여, S3와 유사한 서비스가 존재하여 이를 이용하려고 했다.

문제 상황1

Oracle Cloud 에는 자체적인 CDN 서비스가 없다. Cloud Flare 를 통해 Oracle Object Storage URL로 리디렉션을 하는 경우 Object Storage 에서 Cloud Flare 쪽으로 발생하는 Egress 트래픽에 대해 과금하지 않으며, CDN을 구축하는 쪽은 Cloud Flare의 과금 체계만 따르면 되는 방식이다.

이 CDN 방식을 이용할 수 있는 Oracle Cloud의 Region 이 굉장히 제한적인데, 브라질 상파울루, 유럽의 독일 프랑크 프루트 등 몇개 지역이 있다.

현재 서비스의 타겟이 출시는 국내 출시가 우선이지만, 실상 주력으로 유럽쪽을 노리고 있어서 프랑크프루트 리전에 Object Storage를 생성하고 클라우드 플레어를 이용하여 리디렉션을 거는 방식을 이용해보았다.

문제는 로컬 개발중에서부터 발생했다.

Object Storage 쪽으로 파일 전송이 자꾸 실패하여, DNS를 조회하였더니 정상 조회가 되질 않았다.

$ nslookup objectstorage.eu-frankfrut-1.oraclecloud.com
connection timed out; no servers could be reached

DNS 서버 문제인듯 하여 8.8.8.8, 8.8.4.4 등의 DNS 서버를 추가하고, 로컬 DNS 캐시를 초기화 한 뒤에야 정상 동작을 확인하였다. 로컬에서 테스트는 이렇게 성공하고 테스트 서버로 배포를 하였다.

문제 상황2

현재 서비스 서버는 오사카 지역에 인스턴스가 생성 되어있다. 어플리케이션에서 오사카 지역의 인스턴스에 요청 -> Oracle Object Storage 로 파일 업로드 -> URL 반환 의 순서로 파일 업로드 결과가 사용자에게 반환되고, 사용자는 해당 URL을 이용해 이미지 파일에 접근한다. 이 때는 클라우드 플레어를 거쳐 Object Storage로 향하게 된다.

파일 업로드까지는 아주 순조롭게 진행되었고, 내 작업 맥에서 브라우저를 통해 해당 이미지까지 아주 정상적으로 접근이 되었다. 문제는 어플리케이션에서 이미지가 정상적으로 뜨질 않는 상황이었다.

팀원들에게 문제 상황을 공유했고, 다들 nslookup 명령어 결과를 보내주었는데 Object Storage의 IP 주소가 정상적으로 조회되지 않는다는 것을 알았다. 결국 서비스는 현재 로컬에 파일을 저장하는 방식으로 롤백을 시켜둔 상태이다.

해결 방법에 대한 고민

CDN을 직접 구축할까 하는 고민도 하였지만 비용이 발목을 잡는다. 서비스에서 실제 수익이 발생할지 안할지도 모르는 상황에서 너무 크게 잡은 계획인 것 같고 AWS S3와 CloudFront를 이용하는 방식이 어떨까 싶다. 계정을 새로 생성하면 프리티어로 어느정도 이용이 가능하고, 왠만한 트래픽에 대해서는 비용이 청구되지 않을테니