[클라우드] Azure의 리소스 구조를 알아보자 (with AWS, Google Cloud)

sookyoung.k·2024년 12월 7일
0

🌿 교보DTS TIL

목록 보기
34/39
post-thumbnail

구글 클라우드도 찍먹하고 애저도 찍먹을 해본다. 멀티 클라우드의 길은 멀고도 험난하구나... 하지만 그래도?! 애져가 구글 클라우드보다 낫다. 뭐든 배워두면 피가 되고 살이 되는 법이겠죠... 나름 이 친구는 시장 점유율 2위다. (역시 많이 쓰는데는 이유가 있다 끄덕끄덕) 기본 개념부터 너무 낯설고 이해가 안가서 공부하는데 살짝 애를 먹었는데, 그런 기초적인 부분들을 조금 정리하고 넘어가보려고 한다. 시간이 될 때마다 틈틈히 공부를 해두면 분명 후에 큰 도움이 될 것 같다.


PS C:\Windows\system32> az login
Select the account you want to log in with. For more information on login with Azure CLI, see https://go.microsoft.com/fwlink/?linkid=2271136

Retrieving tenants and subscriptions for the selection...

[Tenant and subscription selection]

No     Subscription name     Subscription ID                       Tenant
-----  --------------------  ------------------------------------  -------------
[1] *  Azure subscription 1  8c593d2f-1ceb-484a-a303-435174c2dba8  기본 디렉터리

내가 애져를 공부하며 가장 먼저 당황스러웠던 것은 Tenant의 존재였다. 에...? 이게 뭐지? 게다가 테넌트의 이름이 '기본 디렉터리'라니. 구글 클라우드의 리소스 구조가 '프로젝트' 단위라는 것도 띠용스러웠는데, 테넌트라는 낯선 개념의 등장. 시작부터 기죽음... 하지만 굴하지 않음.

Tenant?

Tenant의 사전적 의미는 세입자나 임차인이다. 어디서 들어본 것 같다 했는데... 고3 수능 영어에서 봤던 것 같군...

그래서 Azure의 Tenant는 뭘까?! Azure를 사용하기 위해서는 계정을 만들어야 한다. 계정을 만들어서 Azure에 등록할 때 기본적으로 Microsoft Entra ID가 생성된다. (공식 문서의 설명)

왜 Tenant, 임차인이라는 이름을 사용했을까 잠시 생각해보자면 우리가 클라우드를 이용하는 본질적인 이유에서 찾을 수 있을 것 같다. 온프레미스로 자체적인 서버 인프라를 하나하나 구성하기엔 초기 비용이 너무 많이 드니까 클라우드 회사의 컴퓨팅 자원을 '임대하여' 사용하는 것이다. 그렇기 때문에 계정을 생성하는 그 순간부터 사용자는 해당 회사의 '임차인'이 되는 것이다. 그러한 이유로 테넌트라는 이름을 사용한 것이 아닐까 하는 생각이 들었다. 뇌피셜이지만 그럴싸하지 않나요? ㅎㅎ

하지만 솔직히 말해서 공식 문서의 설명이 와닿지 않는다. 게다가 어디선 Microsoft Entra Tenant라고 하고 어디선 Microsoft Entra ID라고 하고... 둘이 같은건지 다른건지...? 이거부터 헷갈려서 여기저기 검색해보고 AI에게도 물어봐서 나름의 정리를 마쳤다.

Microsoft Entra ID의 전용 인스턴스, Microsoft Entra Tenant

Microsoft Entra ID (구 Azure Active Directory)

Microsoft의 클라우드 기반 ID 및 액세스 관리 서비스 (전체 플랫폼)

Entra ID는 서비스 그 자체를 가리킨다.

  • 사용자, 그룹 및 애플리케이션의 Azure 서비스 접근 관리
  • 인증과 권한 부여를 처리
  • 클라우드에서 완전히 운영되어 현대적인 클라우드 중심 조직에 적합

Entra ID는 여러 Tenant를 포함할 수 있다. 각 Tenant는 단일 조직을 대표하며, Entra ID 서비스 내에서 독립적인 공간을 차지한다.

Microsoft Entra Tenant

조직을 위한 Microsoft Entra ID의 전용 인스턴스 (환경)

Entra Tenant는 Entra ID 서비스의 특정 인스턴스를 나타낸다.

  • Azure나 다른 Microsoft 클라우드 서비스에 가입할 때 자동으로 생성
  • 조직의 Azure 클라우드 내 공간, ID와 접근 관리
  • 기본적으로 'yourcompany.onmicrosoft.com'과 같은 도메인을 갖고, 사용자 지정 도메인으로 변경 가능

각 Entra Tenant는 전용 Entra 디렉토리를 가지고 있고, 이 디렉토리에는 테넌트의 사용자, 그룹, 앱이 포함되어 있다.

정리

Entra ID는 서비스이고, Entra Tenant는 이러한 기능이 적용되는 조직의 전용 환경을 말한다. (서비스의 조직별 인스턴스)
👉🏻 Microsoft 서비스에 가입하면 Microsoft Entra ID 서비스를 자동으로 사용할 수 있게 되고, 동시에 그 서비스의 특정 인스턴스인 Tenant가 자동으로 생성된다.
👉🏻 Entra Tenant는 Entra ID 서비스를 사용하여 조직의 ID와 접근을 관리하는 전용 환경을 말한다.

Tenant!

정리하자면, Tenant는 조직의 ID 및 액세스 관리를 위한 기본 단위다. (Entra ID의 전용 인스턴스 어쩌구 하지만 결론적으로 비슷한 개념인듯! 크게 신경 쓸 용어는 아닌 것 같다.)

한 회사나 조직을 대표하는 개념으로, Microsoft 클라우드 서비스의 기반이다. 가장 기초!!

특징

  • ID 관리: 조직의 사용자와 그룹 관리
  • 인증 및 권한 부여: Azure 리소스에 대한 접근 제어
  • 기본 도메인: 생성 시 '*.onmicrosoft.com' 형태의 기본 도메인 할당
  • 리소스 관리의 최상위 계층: Azure 리소스 관리 체계에서 최상위에 위치

조직의 전체적인 ID 및 액세스 관리를 위한 기본 단위로, 그 위에 Azure 리소스 관리가 구축된다. Microsoft 클라우드 서비스 전반에 걸쳐서 중요한 개념이니... 잘 기억해두어야 할 것 같다! 하지만 어려웡!

클라우드 별 리소스 구조

이쯤 알아보니, AWS만 알던 나에게 Azure는 신선한 충격... (GCP는 넘어가자) 그냥 '계정'을 만들었을 뿐인데 테넌트가 생기고 구독이 생기고... 개념이 어려워보이지만, 조직 관리에는 Azure가 더 섬세하게 컨트롤이 가능할 것 같단 생각이 들었다.

그래서 정리해봤다. 내가 배운 AWS, GCP, Azure의 리소스 구조가 어떻게 다른 것인지...!

AWSAzureGoogle Cloud
최상위 단위계정(Account)테넌트(Tenant)조직(Organization)
중간 단위-구독(Subscription)프로젝트(Project)
리소스 그룹화리전(Region)과 가용 영역(Availability Zone)리소스 그룹(Resource Group)폴더(Folder)

GCP에서 프로젝트 단위로 리소스를 관리한다는 사실을 배웠기 때문에, 구독이라는 단어가 조금 당황스러웠지만 Azure에서는 구독 단위로 리소스를 관리한다는 것을 이해할 수 있었다.

AWS에서는 그냥 계정을 하나 생성하면 끝~ 이라는 느낌이라서 리소스 구조에 대해 깊게 생각할 일이 없었는데, 테넌트라는 개념이 들어오면서 관리 체계에 대해서 생각해보게 되었다. 처음엔 복잡하게 느껴지기도 하고, 아직 완전히 이해를 잘 한 건지도 모르겠지만... 확실한 건 대규모 조직에서는 (이를테면 회사) 리소스와 ID를 관리하기에 더 효율적일 거란 생각이 들었다.

Azure의 Subscription

유튜브 구독 말고요... 애저의 구독은 Azure 클라우드 서비스를 사용하기 위한 기본적인 단위다.

  • Azure 리소스를 프로비저닝하고 관리하기 위한 논리적 컨테이너
  • Microsoft와의 계약으로, Azure 서비스 사용에 대한 비용 청구의 기준

주요 기능

  1. 리소스 관리
    • 가상 머신, 데이터베이스, 스토리지 계정 등 모든 Azure 리소스는 특정 구독에 속한다
  2. 비용 관리
    • 사용한 리소스에 대한 요금이 구독 단위로 청구
    • 구독별로 예산을 설정하고 비용을 모니터링 할 수 있다
  3. 액세스 제어
    • 역할 기반 액세스 제어(RBAC)를 통해 구독 내 리소스에 대한 접근 권한 관리
  4. 확장성 관리
    • 구독별로 리소스 생성 제한이 있어, 필요에 따라 여러 구독을 사용하여 확장성을 확보할 수 있다

구독 유형

  • 무료 체험판
  • 종량제 (Pay-As-You-Go)
  • 기업 계약 (Enterprise Agreement)
  • 학생용 구독

Azure에서 프로젝트 프로비저닝

Azure
1. 테넌트(Tenant)
2. 구독(Subscription)
3. 리소스 그룹(Resource Group)
4. 리소스(Resource)

간단하게 요약한 과정은 위와 같다.

  1. 하나의 Azure 계정은 하나의 테넌트에 연결이 되어 있다. 테넌트는 조직을 대표하고, Microsoft Entra ID의 전용 인스턴스이다.
  2. 테넌트 내에서 하나 이상의 구독을 가질 수 있다. 구독은 Azure 서비스 사용에 대한 결제 단위이자 리소스의 논리적 컨테이너 역할을 한다.
  3. 구독 내에 리소스 그룹을 생성한다. 프로젝트, 애플리케이션 또는 기능 별로 관련 리소스를 묵어 관리하는 컨테이너이다.
  4. 마지막으로, 리소스 그룹 내에 실제 프로젝트에 필요한 개별 리소스(ex. 가상 머신, 데이터베이스, 스토리지 계정 등)을 생성한다.

Azure에서 프로젝트를 프로비저닝하면, 그 프로젝트와 관련된 리소스들이 계정에 연결된 테넌트 내의 특정 구독 아래에 생성된 리소스 그룹에 속하게 된다.

때문에 프로젝트를 시작할 때, Azure Portal에서 구독을 선택하고 새로운 리소스 그룹을 생성하거나 기존 리소스 그룹을 선택하여 새로운 프로젝트 리소스를 관리할 수 있다.

Azure 구조 파악

PS C:\Windows\system32> az login
Select the account you want to log in with. For more information on login with Azure CLI, see https://go.microsoft.com/fwlink/?linkid=2271136

Retrieving tenants and subscriptions for the selection...

[Tenant and subscription selection]

No     Subscription name     Subscription ID                       Tenant
-----  --------------------  ------------------------------------  -------------
[1] *  Azure subscription 1  8c593d2f-1ceb-484a-a303-435174c2dba8  기본 디렉터리

그렇다면 나에게 당혹감을 주었던 최초의 명령어 실행 결과로 돌아와서...

이제는 이해할 수 있다!

  1. Azure 계정 생성 👉🏻 기본 디렉토리 라는 테넌트 자동 생성
  2. 기본 구독 생성 👉🏻 계정 생성 시 Azure subscription 1이라는 기본 구독이 자동으로 생성 (구글 클라우드에서 'My First Project'와 유사한 개념)

이러한 구조를 통해서 리소스를 관리하고, 비용을 효과적으로 추적할 수 있다. 프로젝트의 규모가 클수록 Azure가 더 적합할 수도 있겠다는 생각이 들었다!

느낀점

어.렵.다. AWS를 처음 배울 때의 당혹감 비슷한 것을 느꼈다. 사실 내가 제대로 이해한 건지 감도 잘 안 잡힌다. 여러모로 AWS 클라우드 처음 배울 때랑 비슷한 것 같다. 이것도 공부하다보면 어느 순간엔 그나마 수월하게 사용이 가능하겠지! 멀티 클라우드 수업은 끝이 났지만... 꼭 Azure를 버리지 않고... 공부하기로 스스로와 약속... 일단 약속은 해본다. 암튼... 어렵고, 처음엔 단순하게 그냥 비슷할 거라 생각했는데 알면 알수록 다르다. 그래도 각각의 장단점이 조금씩은 보이는 것 같다. 재밌는 공부였는듯~ 안재밋음


본 포스팅은 글로벌소프트웨어캠퍼스와 교보DTS가 함께 진행하는 챌린지입니다.

profile
영차영차 😎

0개의 댓글