MySQL Database Service를 이용해 Oracle Cloud Infrastructure에 Spring Boot Framework 배포
MySQL 데이터베이스를 사용하는 고가용성 응용 프로그램을 배치하기 위한 Spring Boot 프레임워크가 포함된 클라우드에서 다중 계층 토폴로지를 설정합니다.
Spring Boot는 프로덕션 등급 응용 프로그램을 만드는 데 사용할 수 있는 오픈 소스 Java 기반 프레임워크입니다. Spring Boot는 최소한의 구성과 커스터마이제이션으로 애플리케이션을 간편하게 배치하며, 프로세스를 간소화하기 위한 타사 라이브러리를 포함합니다.
구조
이 다계층 참조 아키텍처에는 Oracle Cloud Infrastructure에서 고가용성 애플리케이션을 배포하는 데 사용되는 인프라 리소스와 Spring Boot 프레임워크가 포함되어 있습니다.
이 아키텍처는 로드 밸런서, 배스천 호스트, 응용 프로그램이 설치된 VM(가상 머신) 3개, Oracle MySQL Database Service를 배치합니다.
이 아키텍처에는 두 구획이 포함되어 있습니다. 두 구획 모두 Cloud Guard를 통해 Oracle의 보안 모범 사례를 기반으로 최대 보안을 제공합니다. 또한 Oracle MySQL Database Service가 배포된 구획은 보안 영역 구획입니다.
구성 요소는 고가용성을 제공하기 위해 서로 다른 서브넷 및 장애 도메인에 있습니다. Oracle MySQL Database Service는 배스천 호스트를 통해서만 액세스되며 애플리케이션 VM은 로드 밸런서를 통해 액세스할 수 있습니다.
다음 다이어그램에는 이 구조가 설명되어 있습니다.
Springboot-mysql-oci-oracle.zip
구조에는 다음과 같은 구성 요소가 있습니다.
- 영역
Oracle Cloud Infrastructure 지역은 가용성 도메인이라는 하나 이상의 데이터 센터를 포함하는 현지화된 지리적 영역입니다. 지역은 다른 지역에 독립적이며, 거리가 먼 나라 전체나 대륙을 구분할 수 있습니다.
- 가용성 도메인
가용성 도메인은 한 지역 내의 독립형 독립적인 데이터 센터입니다. 각 가용성 도메인의 물리적 리소스는 내결함성을 제공하는 다른 가용성 도메인의 리소스와 격리됩니다. 가용성 도메인은 전원, 냉각 또는 내부 가용성 도메인 네트워크와 같은 인프라를 공유하지 않습니다. 따라서 한 가용성 도메인에서 장애가 발생해도 해당 지역의 다른 가용성 도메인에 영향을 주지 않습니다.
- 결함 도메인
장애 도메인은 한 가용성 도메인 내 하드웨어와 인프라의 그룹입니다. 각 가용성 도메인에는 독립적인 전원 및 하드웨어의 3개의 장애 도메인이 있습니다. 여러 장애 도메인에 걸쳐 리소스를 분배할 경우 응용 프로그램은 결함 도메인 내에서 물리적 서버 오류, 시스템 유지 관리 및 전원 오류를 허용할 수 있습니다.
- VCN(가상 클라우드 네트워크) 및 서브넷
VCN은 Oracle Cloud Infrastructure 지역에서 설정하는 사용자 정의 가능한 소프트웨어 정의 네트워크입니다. 기존의 데이터 센터 네트워크와 마찬가지로 VCN은 네트워크 환경에 대한 완벽한 제어를 제공합니다. VCN에는 VCN을 생성한 후 변경할 수 있는 겹치지 않는 CIDR 블록이 여러 개 있을 수 있습니다. VCN을 영역 또는 가용성 도메인으로 범위가 지정될 수 있는 서브넷으로 분할할 수 있습니다. 각 서브넷은 VCN의 다른 서브넷과 겹치지 않는 연속 주소 범위로 구성됩니다. 서브넷 생성 후 서브넷의 크기를 변경할 수 있습니다. 서브넷은 공용 또는 전용일 수 있습니다.
- 보안 목록
각 서브넷에 대해 서브넷 내부/외부에서 허용해야 하는 트래픽의 소스, 대상 및 유형을 지정하는 보안 규칙을 생성할 수 있습니다.
- 배스천
배스천 호스트와 Oracle Cloud Infrastructure 배스천 옵션 중에서 선택합니다.
-
배스천 호스트는 클라우드 외부의 토폴로지에 대한 안전하고 제어되는 시작점 역할을 하는 컴퓨트 인스턴스입니다. 배스천 호스트는 일반적으로 DMZ(Demilitarized Zone)에서 프로비전됩니다. 클라우드 외부에서 직접 액세스할 수 없는 전용 네트워크에 배치하여 중요한 리소스를 보호할 수 있습니다. 토폴로지에는 정기적으로 모니터링하고 감사할 수 있는 알려진 단일 시작점이 있습니다. 따라서 토폴로지의 보다 민감한 구성 요소를 노출하지 않고 노출하지 않아도 됩니다.
-
Oracle Cloud Infrastructure 배스천은 퍼블릭 엔드포인트가 없고 베어 메탈 및 가상 머신, Oracle MySQL Database Service, Autonomous Transaction Processing(ATP), Oracle Container Engine for Kubernetes(OKE) 및 SSH(Secure Shell Protocol) 액세스를 허용하는 기타 모든 리소스가 필요한 리소스에 대한 제한적이고 시간 제한적인 보안 액세스를 제공합니다. Oracle Cloud Infrastructure 배스천 서비스를 사용하면 점프 호스트를 배포하고 유지 관리하지 않고도 전용 호스트에 접근할 수 있습니다. 또한 ID 기반 권한과 중앙 집중식 감사(audit) 및 시간 기반 SSH 세션을 통해 보안 상태를 향상시킵니다. Oracle Cloud Infrastructure 배스천은 배스천 액세스용 공용 IP가 필요 없어 원격 액세스 제공 시 방대한 공격 표면을 없애줍니다.
-
- 로드 밸런서
Oracle Cloud Infrastructure Load Balancing 서비스는 단일 시작점에서 백엔드의 여러 서버로 자동화된 트래픽 분배를 제공합니다.
- Cloud Guard
Oracle Cloud Guard를 사용하여 Oracle Cloud Infrastructure에서 리소스의 보안을 모니터링하고 유지보수할 수 있습니다. Cloud Guard는 섹터 레시피를 사용하여 리소스에 대한 보안 취약점을 검사하고 운영자 및 사용자의 위험한 작업을 모니터링할 수 있습니다. 잘못된 구성이나 비보안 작업이 감지되면 Cloud Guard는 사용자가 정의할 수 있는 응답자 레시피를 기반으로 이러한 작업을 수행할 수 있도록 해 줍니다.
- 보안 영역
보안 영역은 시작부터 데이터 암호화, 전체 구획의 네트워크에 대한 공용 액세스 방지와 같은 정책을 시행하여 Oracle의 보안 모범사례를 보장합니다. 보안 영역은 동일한 이름의 구획과 연관되며, 구획 및 해당 하위 구획에 적용되는 보안 영역 정책 또는 "레시피"를 포함합니다. 표준 구획을 추가하거나 보안 영역 구획으로 이동할 수 없습니다.
- 로컬 피어링 게이트웨이(LPG)
LPG를 사용하면 한 VCN을 같은 지역의 다른 VCN과 피어링할 수 있습니다. 피어링이란 인터넷을 통과하거나 온프레미스 네트워크를 통해 라우팅하는 트래픽 없이 VCN이 전용 IP 주소를 사용하여 통신한다는 의미입니다.
- 데이터베이스
이 아키텍처는 E-shape VM에서 실행되는 MySQL Database 서비스를 사용합니다.
권장 사항
요구 사항은 여기에 설명된 아키텍처와 다를 수 있습니다. 다음 권장 사항을 시작점으로 사용합니다.
- Cloud Guard
Oracle에서 제공하는 기본 레시피를 복제하고 사용자정의하여 사용자정의 감지기 및 응답기 레시피를 생성합니다. 이러한 레시피를 사용하면 경고를 생성하는 보안 위반 유형과 수행할 수 있는 작업을 지정할 수 있습니다. 예를 들어 오브젝트 스토리지 버킷은 가시성을 공용으로 설정할 수 있습니다.
테넌시 레벨에서 Cloud Guard를 적용하여 가장 광범위한 범위를 다루고 여러 구성을 유지 관리하는 관리 부담을 줄일 수 있습니다.
관리 목록 기능을 사용하여 특정 구성을 감지기에 적용할 수도 있습니다.
- 보안 영역
최대 보안이 필요한 리소스의 경우 Oracle은 보안 영역을 사용할 것을 권장합니다. 보안 영역은 모범 사례를 기반으로 하는 Oracle 정의 보안 정책의 레시피와 연관된 구획입니다. 예를 들어, 보안 영역의 리소스는 공용 인터넷에서 액세스할 수 없어야 하며 고객 관리 키를 사용하여 암호화해야 합니다. 보안 영역에서 리소스를 생성하고 업데이트할 때 Oracle Cloud Infrastructure는 보안 영역 레시피의 정책에 대해 작업을 검증하고 모든 정책을 위반하는 작업을 거부합니다.
- VCN
VCN을 생성할 때 VCN의 서브넷에 연결하려는 리소스 수를 기반으로 필요한 CIDR 블록 수 및 각 블록의 크기를 확인하십시오. 표준 전용 IP 주소 공간 내에 있는 CIDR 블록을 사용합니다.
전용 접속을 설정할 다른 네트워크(Oracle Cloud Infrastructure, 온프레미스 데이터 센터 또는 다른 클라우드 제공자)와 겹치지 않는 CIDR 블록을 선택합니다.
VCN을 생성한 후에는 해당 CIDR 블록을 변경, 추가 및 제거할 수 있습니다.
서브넷을 설계할 때는 트래픽 플로우와 보안 요구사항을 고려하십시오. 특정 계층 또는 역할 내의 모든 리소스를 동일한 서브넷에 연결하여 보안 경계 역할을 할 수 있습니다.
지역별 서브넷 사용.
- 보안 목록
보안 목록을 사용하여 전체 서브넷에 적용되는 수신 및 송신 규칙을 정의합니다.
- Virtual machine
고가용성을 위해 VM은 여러 장애 도메인에 분산됩니다. VM.Standard.E3.Flex, 4코어 OCPU, 64GB 메모리, 4Gbps 네트워크 대역폭(Oracle Linux 7)을 사용합니다.
- 배스천 호스트
OCPU 1개 및 RAM 2개가 있는 VM.Standard.E3.Flex 구성을 사용합니다. 또는 Oracle Cloud Infrastructure 배스천 서비스를 사용합니다.
- 로드 밸런서
로드 밸런서는 수신 트래픽을 응용 프로그램 VM으로 분산합니다. 로드 밸런서를 생성할 때 고정 대역폭을 제공하는 미리 정의된 구성을 선택하거나, 대역폭 범위를 설정하는 커스터마이징(가변 가능) 구성을 지정할 수 있습니다. 그러면 서비스가 트래픽 패턴에 따라 대역폭을 자동으로 확장할 수 있습니다. 두 방법 중 하나로 로드 밸런서를 생성한 후 언제든지 구성을 변경할 수 있습니다.
- 데이터베이스 서비스
응용 프로그램에 충분한 CPU 및 메모리를 제공하는 VM.Standard.E2.8를 사용합니다.
고려 사항
- 확장성
컴퓨트 인스턴스의 구성을 변경하여 애플리케이션 서버를 수직으로 확장할 수 있습니다. 코어 수가 더 많은 구성은 더 많은 메모리 및 네트워크 대역폭을 제공합니다. 추가 스토리지가 필요한 경우 애플리케이션 서버에 연결된 블록 볼륨의 크기를 늘립니다.
- 가용성
장애 도메인은 단일 가용성 도메인 내에 배포된 워크로드에 대해 최적의 복원성을 제공합니다. 애플리케이션 계층에서 고가용성을 위해서는 필요에 따라 더 많은 애플리케이션 서버를 구축하십시오.
- 비용
애플리케이션 계층에서 애플리케이션에 필요한 코어, 메모리 및 네트워크 대역폭을 기반으로 컴퓨트 구성을 선택합니다. 응용 프로그램 서버에 대한 4코어 구성으로 시작할 수 있습니다. 성능, 메모리 또는 네트워크 대역폭이 더 필요한 경우 더 큰 구성으로 변경할 수 있습니다.
- 백업
Oracle Cloud Infrastructure는 MySQL 데이터베이스를 자동으로 백업합니다. 수동 백업을 생성하여 60일 동안 보관하는 Oracle Cloud Infrastructure Object Storage 버킷.
Oracle Cloud Infrastructure Block Volumes를 사용하면 블록 볼륨에 데이터의 특정 시점 백업을 생성할 수 있습니다. 이러한 백업을 언제든지 새 볼륨으로 복원할 수 있습니다. 또한 이 서비스를 사용하여 애플리케이션 중단이나 다운타임 없이 부팅 볼륨의 특정 시점, 충돌 시 정합성이 보장되는 백업을 만들 수 있습니다. 부트 볼륨과 블록 볼륨은 동일한 백업 기능을 갖습니다.
- 보안
액세스 제어를 위해 정책을 사용하여 클라우드에서 리소스에 액세스할 수 있는 사용자와 수행 가능한 작업을 제한합니다.
네트워크 보안을 위해 보안 목록 및 NSG(네트워크 보안 그룹)는 보안 규칙을 사용하여 패킷 레벨에서 트래픽을 제어합니다. NSG는 단일 VCN에서 선택한 VNIC 집합에만 적용되는 수신 및 송신 보안 규칙 집합으로 구성됩니다. 예를 들어, VCN에 있는 다계층 애플리케이션의 웹 계층에서 웹 서버로 사용되는 모든 컴퓨트 인스턴스에 규칙을 적용하도록 선택할 수 있습니다.
NSG 보안 규칙은 보안 목록 규칙과 동일하게 작동합니다. 그러나 NSG 보안 규칙의 소스 또는 대상의 경우 CIDR 블록 대신 NSG를 지정할 수 있습니다. 따라서 동일한 VCN의 두 NSG 또는 단일 NSG 내의 트래픽 간에 트래픽을 제어하는 보안 규칙을 쉽게 작성할 수 있습니다. 데이터베이스 시스템을 생성할 때 하나 이상의 NSG를 지정할 수 있습니다. 하나 이상의 NSG를 사용하도록 기존 데이터베이스 시스템을 업데이트할 수도 있습니다.
로그 변경
이 로그에는 중요한 변경 사항만 나열됩니다.
| 2021년 11월 18일 |
|
| 6월 28, 2021년 | Deploy 섹션의 Deploy 버튼에 대한 대상을 업데이트했습니다. |
| 2021년 2월 8일 |
[배포] 단추를 클릭하여 Oracle Cloud Infrastructure Resource Manager를 통해 리소스를 자동으로 배포하거나, Terraform 코드를 다운로드한 다음, Terraform 명령줄 인터페이스를 사용하여 리소스를 배포하여 Terraform을 사용하여 인프라 리소스를 배포하기 위해 [배포] 섹션이 업데이트되었습니다. 대역폭 범위를 설정하는 미리 정의된 구성 또는 유연한 구성을 포함하도록 로드 밸런서 권장 사항이 업데이트되어 서비스가 트래픽 패턴에 따라 대역폭을 자동으로 확장할 수 있게 되었습니다. |
