프로젝트 명 : File Gateway를 이용한 하이브리드 데이터 통합
프로젝트 인원 : 1명
프로젝트 기간 : 2023.06 ~ 2023.07
프로젝트 소개 : 본 프로젝트의 주요 목표는 기업 내부의 다양한 온프레미스 데이터를 효율적으로 S3 버킷으로 이전하여 DR능력을 확보하고, File Gateway 호스트를 다른 서버에 마운트하여 클라우드에서 온프레미스 데이터를 원활하게 활용하는 것입니다. 이를 위해 회사 내의 특정 온프레미스 서버 시나리오를 가정하고 요구 사항을 충족하는 적합한 아키텍처를 구현하는 프로젝트입니다. 더불어 재사용이 가능하도록 Terraform 모듈로 구성하였습니다.
-
과거 판매 매출액, 품목과 같은 사내 데이터들 온프레미스 서버에 저장해 두었음
-
새로운 이벤트를 성공적으로 런칭하기 위해 온프레미스 데이터들을 이용해야 함
-
온프레미스 서버 내에서 일정 주기로 특정 Directory에 백업하고 있음
-
추후 Data Lake 구축을 하고자 함
-
전략과 목표의 구체화를 위해 전사 데이터의 대규모 머신러닝 학습이 예정되어 있음
-
DR 구성을 위해 Cloud로 Data Migration 요망
-
추후 라이브 중인 다른 서비스와의 연동을 위해 공급자는 AWS로 선정
-
잦은 데이터 엑세스가 예상되므로 높은 접근성 확보
-
네트워크 보안 확보
- VPC에 위치
- S3, DynamoDB를 지원
- Route table을 통해 대상 서비스에게 도달
- Public IP를 사용하며, IAM Policy or Resource based policy를 사용하여 액세스 제한
- Subnet에 위치. 가용성을 위한다면 각 AZ의 Subnet에 배치
- AWS 대부분의 서비스 지원
- Gateway Endpoint에 비해 높은 비용
- ENI(Elastic Network Interface)를 사용하기 때문에 Private IP가 할당되며, Security Group을 통해 액세스 제어
- Public Internet을 사용하지 않는 "Private Link" 기술을 사용
- Stored Volume : 모든 데이터를 로컬에 저장 후 비동기적 AWS 백업
- Cache Volume : 자주 사용되는 데이터는 로컬에 존재하고 나머지 데이터는 AWS에 백업
출처 : [ hashicort github ] hashicorp/terraform-provider-aws#30041
=> AWS VPC <-> S3 Bucket 간의 데이터 이동 시, Private Link를 이용하기 위해 Interface Endpoint로 설정
=> Private DNS를 이용한 통신을 위해 둘 다 Enable 시켜줌
=> Interface Endpoint <-> S3 Bucket의 통신을 위한 Security Group. HTTPS Protocol을 사용하며, 출발지가 VPC 대역인 경우만 허용
=> S3 Interface Endpoint와 동일 �Subnet에 위치. 또한 마찬가지로 AWS VPC <-> Storage Gateway 간 Private Link 사용하기 위한 Interface Endpoint 설정
=> Security group & interface endpoint 서비스 제외 모든 구성 동일
=> Storage Gateway를 사용하기 위한 포트와 VPC에서 Endpoint로 향하는 요청을 인바운드 룰에서 허용
=> VM의 Time zone과 Storage Gateway의 Time zone이 일치해야 함. ap-northeast-2(Seoul) Region의 값 선택
=> VM에 설치할 플랫폼 다운로드 후, Vmware에 접속하여 이후 Cache Volume으로 사용할 150G 로컬 디스크를 할당
=> Private Link를 이용하여 통신하길 원하므로 VPC Hosing -> 위에서 생성한 Storage Gateway용 "Interface Endpoint"를 연동
=> 위에서 할당한 150G 로컬 디스크를 Cache Storage로 추가
=> 약간의 대기 후 Running state 반환
=> 구체적인 설정을 위해 "구성 사용자 지정" 선택
=> NAS 처럼 사용할 S3 bucket과 prefix를 설정
=> On premise 데이터에 대하여 잦은 Access를 원하므로 갹체의 Storage Class = Standard로 지정
=> VPC Hosing을 통해 연결되므로 위에서 생성한 S3용 "Interface Endpoint"를 연동 후 "생성"
=> 생성한 File Share를 클릭 후 아래부분을 확인하면 위 처럼 Mount 명령어를 제공함. User의 OS에 맞게 명령어 실행
- Mount할 directory를 하나 만들고 위의 Mount command 실행
mkdir ./mnt_storage_gateway
=> Mount 성공. Mount한 서버에서 아래의 command를 통해 간단한 txt file을 생성하여 Test
touch "heungbot is king of school" > me.txt;
echo "test storage gateway mount" > ./mount_test.txt
=> 파일 생성 확인
=> 약 1분 뒤의 딜레이 후, S3 bucket에도 잘 업로드 되었음