본문 바로가기

전체 글110

AWS 로드밸런서 먼저 AWS 로드밸런서에 대해 알아보기 전에 로드밸런서에는 2가지 종류가 있습니다. 한가지는 L4 Load Balancer, 다른 하나는 L7 Load Balancer 입니다. 네트워크 계층 구조에서 L4에 해당하는 것은 Transport Layer로 IP와 Port를 로드밸런싱의 기준으로 봅니다. 반면 L7 계층은 Application Layer를 뜻하며 로드밸런싱시에 HTTP 헤더 등을 보고 결정할 수 있습니다. 최근에는 마이크로서비스를 많이 이용하게 되는데 이에 적절한 로드밸런서는 무엇일까요? 바로 L7 Load Balancer입니다. 예를 들어서 마이크로서비스 형태로 주문을 담당하는 서버 컨테이너와 결제를 담당하는 서버 컨테이너가 있다고 가정해봅시다. Rest Api를 적용했을 경우 주문 관련 요.. 2022. 6. 26.
[AWS VPC] Private Subnet에서 외부 접속을 하는 원리 AWS에서 VPC를 사용하게 되면 아래와 같은 설계를 떠올릴 수 있습니다. 보통 데이터베이스와 같은 서비스들은 보안 등을 위해서 Private Subnet에 두어 외부와 통신을 막습니다. 그러나 가끔은 Private Subnet에 있는 서비스들도 외부로부터 파일이나 데이터 등을 가져와야 하는 경우가 있습니다. 한 가지 예를 들자면 postgres같은 데이터베이스는 같은 VPC내에 있는 EC2 인스턴스들과는 통신을 하겠지만 굳이 외부와 통신이 가능하게 열어둘 필요는 없습니다. 그러나 postgres를 설치하거나 업데이트 등을 하기 위해서는 외부와 통신이 가능해야합니다. 이런 경우 어떻게 외부와 통신을 하는지 알아보겠습니다. Private Subnet의 경우 외부와는 통신이 안되지만 같은 VPC내에 있는 S.. 2022. 6. 21.
k8s #5 networking&namespace 이번 포스팅에서는 쿠버네티스 상에서 두개의 컨테이너 간에 통신에 관련하여 알아보겠습니다. 예를 들어서 go언어로 만들어진 서버 컨테이너와 postgresql 데이터베이스 컨테이너가 통신을 하고싶다고 가정해보겠습니다. 첫번째 방법으로는 아래 그림 같은 구조를 생각해볼 수 있습니다. 한개의 pod안에 통신을 하려는 두개의 컨테이너를 모두 집어넣는 것입니다. 그러나 이런 방법은 바람직하지 못합니다. 왜냐하면 예를 들어 pod이 모종의 이유로 작동이 안되면 go언어 서버 컨테이너에 문제가 있는지 아니면 postgresql 컨테이너에 문제가 있는지에 대해서도 찾아봐야할 것이기 때문입니다. 이외에도 상당히 복잡해지기 때문에 보통 이런 경우 2개의 pod으로 나누게 됩니다. 그럼 아래와 같은 구조를 생각해 볼 수 있.. 2021. 11. 24.
k8s #4 Deployment&Rollout k8s의 Deployment는 ReplicaSet과 함께 무중단 배포를 할 때 쓰입니다. 예를 들어 webapp이라는 pod이 있고 2개의 Replica를 만들어서 배포중이라고 가정해봅시다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 apiVersion: apps/v1 kind: Replicaset metadata: name: webapp spec: selector: matchLabels: app: webapp replicas: 2 template: metadata: labels: app: webapp spec: containers: - name: webapp image: cs 그렇다면 위 코드와 비슷한 yaml파일을 작성해볼 수 있습니다. 이제 버젼 업그레이드를 한 새로.. 2021. 11. 23.