Cloud 14

Azure - Routes

아래와 같이 PC A와 PC B가 서로 다른 네트워크에 위치했다고 가정하자. A가 B로 패킷을 보내려고 한다면, 어떤 것을 알고 있어야 할까. 복잡하게 생각할 것 없이 나와 직접 연결된 컴퓨터 중 B로 패킷을 전달해 줄 수 있는 Next Hop만 기억하면 된다. 중간 전달자 역할을 해줄 Next Hop 역시 다음 전달자에 대해서만 알면 궁극적으로 B까지 패킷을 전달할 수 있을 것이다. 이렇게 특정 IP 주소나 대역에 대해 Next Hop을 지정한 것을 Route라고 하며, Route를 한데 모아서 테이블로 구성한 것을 Route Table이라고 한다(사실 이렇게 단순한 원리로 동작하진 않지만, 이해를 돕기 위해 기본 개념만 설명하였다). Azure에서 VM을 생성하면 별다른 설정을 하지 않아도 기본 Ro..

Cloud 2022.03.08

Azure - Role Based Access Control

Azure의 Resouce 권한 관리는 Role을 기반으로 이루어진다. 특정 Resource에 대한 접근은 해당 Identity에 Role이 부여가 되었는지 아닌지에 따라 결정된다는 뜻이다. 굳이 Azure뿐만이 아닌 다른 CSP(AWS, GCP)나 K8s 등에서도 보편적으로 사용하는 방식이다. Azure의 RBAC을 이해하기 위해선 Role, Security Principal, Scope에 대한 이해가 먼저 필요하다. Role Action은 특정 Resource 및 해당 속성에 대해 수행할 수 있는 작업(Read, Write 등)을 의미한다. 예를 들어 Virtual Machine 인스턴스를 가동에 대한 Action은 'Microsoft.Compute/virtualMachines/start/action..

Cloud 2022.03.06

Azure - Virtual Network Peering

Virtual Network AWS의 VPC(Virtual Private Cloud)와 동일한 개념으로, Azure 역시 Private Network를 구성하기 위해 Virtual Network(VNet) 라는 리소스를 제공한다. VNet 위에 VM 인스턴스 등의 리소스를 배포하여, 다른 VM이나 인터넷과 통신할 수 있다. VNet 생성시 어떤 Region에 구성할 것인지 선택해야 하며, 하나의 VNet은 다시 여러개의 Subnet으로 분할할 수 있다. 기본적으로 VNet 간에는 서로 다른 네트워크에 위치한 것으로 인식하며, 직접적인 Communication이 이루어지지 않는다. 예를 들어 VNet01(10.1.0.0/16)과 VNet02(10.2.0.0/16)이 있다고 가정하자. 각 VNet에 defa..

Cloud 2022.03.04

Container 101 - (1) Introduction

지금 여러분이 IT업계에서 일하고 있다면 컨테이너라는 단어를 언젠가 한번은 꼭 들어봤을 것이다. 단순히 가상화 기술이라고 하기엔 그 범위와 중요성이 너무 커서, 더 이상 컨테이너 기술을 모른다면 Cloud Native 시대를 생존하기 어려울 지경이다. 도대체 컨테이너가 뭔데, 얼마나 좋길래 이렇게 난리인걸까? 그 질문에 앞서 '왜 컨테이너가 필요할까?'를 먼저 생각해 볼 필요가 있다. 다음과 같이 정말 원시적인 호스팅 환경을 예로 들겠다. 서버 1대에 여러개의 어플리케이션을 배포하였다. 어플리케이션은 단독으로 실행되지 않고, 패키지나 라이브러리(ex: libssl.so)와 같은 Dependency가 존재하며 서로 같은 라이브러리를 공유할 수 있다. 이제 특정 어플리케이션을 업그레이드하면서 dependec..

Cloud 2022.01.10

Amazon RDS - Read Replica와 Multi AZ 비교

Read Replica 데이터베이스에서 Read Replica는 Read/Write 모두 가능한 Master DB 인스턴스에 비해 SELECT 쿼리와 같은 Read 작업만 수행가능한 인스턴스이다. Read Replica로의 Write 작업은 허용하지 않는다. RDS에서 제공하는 Read Replica는 다음과 같은 특성을 갖는다. Read Replica를 최대 5개까지 추가할 수 있음 동일 AZ, Cross AZ, Cross Region 가능 비동기 방식의 Replication 짧은 시간 동안 Replica와 Master 간의 데이터 차이가 발생할 수 있음 Read Replica를 Master DB로 변경할 수 있음(Promotion) 참고로 어플리케이션 레벨에서 Read Replica를 활용하기 위해선..

Cloud 2021.11.07

Amazon RDS - 개요

Amazon RDS RDS는 Relation Database Service의 약자로, AWS에서 제공, 관리하는 DBaaS(DB as a Service) 중 하나이다. Relation이라는 단어에서 바로 알 수 있듯 SQL을 쿼리로 사용하는 관계형 데이터베이스(RDB; Relational Database)이며, 현재 RDS에서 선택 가능한 DB 엔진은 다음과 같다. Aurora PosgreSQL MySQL MariaDB Oracle SQL Server 참고로 Aurora는 MySQL, PostgreSQL과 호환되는 관계형 데이터베이스로 Amazon에서 직접 개발하였으며, 빠른 성능과 안정성을 자랑한다. 전적으로 Amazon에 소유권이 있으며, 소스코드는 공개되지 않았다. RDS는 클라우드 프로바이더가 사..

Cloud 2021.11.05

Container Vs. VM

이번 시간엔 컨테이너와 가상머신(VM; Virtual Machine)을 비교하는 시간을 갖고자 한다. VM(Virtual Machine) 하나의 물리적인 컴퓨터(Baremetal) 위에 하이퍼바이저(Hypervisor)가 존재하여 H/W 자원(CPU, Memory 등)을 가상화한 레이어를 제공한다. VM은 하이퍼바이저 위에서 필요한 만큼의 자원이 할당된 가상의 컴퓨터로, 각각의 VM은 서로간의 존재를 알 수 없으며 커널을 포함한 OS는 독립적으로 실행된다. 일반적으로 클라우드 환경에서 인프라(서버, 네트워크, 스토리지 등)를 프로비저닝하는데 가장 많이 사용되며, 환경을 분리하거나 전통적인 Monolithic Architecture 기반의 서비스를 운영하는데 쓰인다. 물리적인 컴퓨터와 기능면에선 차이가 없..

Cloud 2021.06.26

Amazon EKS Tutorial - Part.6

Cluster Autoscaler 이번 시간엔 K8s 클러스터 Worker Node의 갯수를 유동적으로 늘리거나 줄일 수 있는 Cluster Autoscaler에 대해서 알아보자. 이 기능은 AWS가 아닌 Kubernetes에서 진행중인 공식 프로젝트 중 하나이며, 다음과 같은 상황에서 클러스터의 사이즈가 자동으로 조절된다. Resource가 부족하여 Pod을 생성할 수 없는 경우 => 새로운 Worker Node 추가 일정 시간 동안 Resource 사용량이 기준에 못미친 Node 발생 => 해당 Node 제거 Cluster Autoscaler를 설치하기 전, K8s와 AWS의 권한과 관련된 IRSA의 개념을 설명하고 넘어가겠다. IRSA 모든 Pod은 ServiceAccount(SA)가 존재하며, 해..

Cloud 2021.03.22

Amazon EKS Tutorial - Part.5

ELB Access Log 저장 - S3 Bucket 이전에 배포했던 Guestbook App의 앞에는 ELB와 Ingress Controller가 위치한다. 이번 시간은 사용자가 서비스에 접근하기 위해서 반드시 거쳐야 하는 ELB의 Access Log를 S3에 저장하는 방법에 대해 다뤄보려고 한다. Amazon EKS Tutorial - Part.4 Application 배포 새로운 클러스터 생성 본격적으로 EKS 클러스터에 App을 배포하는 과정에 대해 알아보자. 실습 환경 구성을 위해 기존 클러스터는 제거하고 아래 명령어로 새로운 클러스터를 생성 cwal.tistory.com 가장 먼저 S3 Bucket을 생성한다. AWS 콘솔의 Amazon S3 > Buckets 메뉴에서 생성 가능하다. Buck..

Cloud 2021.03.20

Amazon EKS Tutorial - Part.4

Application 배포 새로운 클러스터 생성 본격적으로 EKS 클러스터에 App을 배포하는 과정에 대해 알아보자. 실습 환경 구성을 위해 기존 클러스터는 제거하고 아래 명령어로 새로운 클러스터를 생성한다. 이번엔 yaml 파일을 사용하는 대신 Imperative 방식으로 진행하였다. eksctl create cluster \ --name eks-from-eksctl \ --version 1.19 \ --region ap-northeast-2 \ --nodegroup-name workers \ --node-type t3.medium \ --nodes 2 \ --nodes-min 1 \ --nodes-max 4 \ --ssh-access \ --ssh-public-key eks-access \ --man..

Cloud 2021.03.17