SSH Connection을 통해 데이터를 전송하는 기법, SSH 포트포워딩으로도 불린다. 프록시의 역할과 유사하다. SSH의 특징으로 인해 전송되는 데이터는 모두 암호화된다는 점이 있다. 위와 같이 SSH 서버로의 연결을 통해 터널을 생성하고, 터널을 통해 다른 서비스로 접근하는 방법을 SSH 터널링이라고 한다. 연결방향에 따라 로컬 / 리모트로 구분될 수 있고, 추가로 다이나믹 SSH 터널링도 존재한다. 로컬 SSH 터널링 로컬 포트를 원격지의 포트로 포워딩 이와 같은 로컬 SSH 터널링은 가장 많이 사용되는 방법으로 주로 방화벽 정책을 우회하기 위한 목적으로 이용되고는 한다. 재택에서 사내 PC를 통해 내부망에 접근하는 경우 등에 사용한다. 로컬 SSH 터널링의 커맨드는 아래와 같다. ssh -L ..
전체 글
어차피 이 세상은 아만보Terraform apply를 통해 리소스를 생성하면 실제 인프라에 terraform 코드 내용이 반영되어 리소스가 생성된다.이렇게 apply로 생성한 리소스는 destroy로 삭제하는데, 만약 terraform으로 생성한 리소스를 웹 콘솔에서 임의로 삭제를 해버리면 어떻게 될까?혹은 terraform으로 이미 생성한 리소스에 대해서 또 다시 apply를 적용시킨다면 어떨까?더 나아가서 팀 이상의 단위로 인프라를 관리할 때 여러명이 동시에 같은 리소스에 접근하는 경우, 적용된 인프라 리소스가 충돌하는 상황이 발생할 수도 있다. 이런 문제를 해결하기위해 등장한 state와 backend 개념에 대해 알아보도록 한다. tfstateTerraform이 생성한 인프라 리소스의 상태 정보를 저장해둔 파일, 기본적..
ALB나 cloudfront를 이용하다 보면 HTTP/2를 지원하는 것을 확인할 수 있다. HTTP/2는 HTTP/1.1에 비해 빠르다는 것 정도만 알고 있다. 이 두 버전을 비교해보며 HTTP/2에서는 정확히 어떤 것들이 개선되었는 지를 비교해본다. HTTP/1.1 1997년에 릴리스된 프로토콜로 클라이언트와 웹 서버간의 정보를 교환하는 Layer 7의 프로토콜이다. HTTP/1.1에서는 기존 1.0과 비교해 아래 2가지 특징을 가진다. Persist Connection 기존 1.0 버전에서는 TCP 3way hand-shaking을 거쳐 HTTP Connection이 이루어졌다. 즉, 매 Connection을 생성할때마다 hand-shaking이 이루어지고, 큰 overhead로 작용되었다. (RTT..
최근에 AWS Skill builders 강의를 들었다. 아무래도 요새 AWS 측에서 밀고있는 주제가 App 현대화와 생성형 AI인 만큼 관련된 내용들이 강의로 나왔었는데, 그 중 흥미롭게 사용했었던 서비스중 하나를 가져왔다 Amazon Codewhisperer 생성형 AI기반의 코드 생성기, 주석으로 문장형 명령을 입력하면 AI가 그에 맞는 코드를 추천해주는 서비스이다. 아마존에서는 AI 코딩 동료라는 개념으로 이 서비스를 소개했다. 그리고 이 서비스는 개인 레벨의 계정에 한해서는 무료로 오픈했다고 하니, 부담없이 접근할 수 있는 장점도 있다. AI 코드 생성기 - Amazon CodeWhisperer - AWS CodeWhisperer는 사용자의 작업 방식에 꼭 맞습니다. Python, Java 및 ..
이번 글에서는 직접 간단한 인프라 아키텍쳐를 구성하고 코드를 작성해 Apply까지 진행해본다. 인스턴스 2개를 생성해 하나의 ALB로 묶은 아키텍쳐를 생성하보고자 한다. ALB 1개와 2쌍의 서브넷, 2개의 인스턴스로 구성된 아주 전형적인 ALB 아키텍쳐이다. 시작하기에 앞서, Terraform 실행을 위한 Credential을 생성해야한다. Terraform을 통해 다양한 리소스들을 관리하므로 AdministratorAccess 권한을 가진 사용자를 생성한다. 사용자 생성 후 액세스 키도 생성한다. 이렇게 생성한 Credential은 terraform 코드 내에 직접 넣을 수 있고, CLI config/credential 파일에 넣고 불러올 수도 있으며, 시스템 환경변수 식으로 설정해 불러올 수 있기도..
이번에는 Terraform에서 사용되는 기본 키워드를 몇 가지 알아보고, 직접 code를 작성해 인프라를 올려본다. 기본 키워드 Provider Terraform 템플릿으로 구성될 인프라의 타입으로, AWS / GCP / Azure와 같은 퍼블릭 클라우드 서비스 부터 SaaS 타입의 서비스까지 다양한 외부 서비스들을 Terraform과 연결해주는 기능 프로바이더는 configuration 단계에서 반드시 설정해주어야한다. 아래 링크에서 Terraform이 지원하는 Provider 목록을 확인할 수 있다. Terraform Registry registry.terraform.io Terraform은 이러한 Provider들의 API를 호출하는 식으로 실행된다. 아래 코드는 Provider를 AWS로 지정하는..
Public cloud가 발달함에 따라 많은 개인과 기업들이 운영 중인 서비스들을 클라우드로 전환하게 되었다. 클라우드로 전환하고 점차 서비스들이 확장되며, 사용중인 리소스들의 수가 증가하여 프로비저닝과 운영/관리가 복잡하고 어렵게되었다. 이에 따라, 클라우드 리소스를 코드 형식으로 관리하고자하는 움직임이 나타나고, 이번에 소개할 Terraform이 등장하게 되었다. Terraform terraform은 Hashicorp에서 개발한 오픈소스 인프라관리 도구로, 인프라의 구조를 코드로 작성해서 간단하게 구축하고 인프라의 형상을 관리할 수 있다. Terraform은 HCL(Hashicorp Configuration Language)라는 자체적인 설정 Language를 이용해 인프라 리소스들을 선언한다. 자체..
CDN Content Delivery/Distribution Network의 약자로, 서버의 컨텐츠를 빠르게 전송하기 위해 다수의 네트워크 노드들에 컨텐츠를 저장(캐싱)해두는 시스템 오리진 서버가 컨텐츠를 여러 네트워크 노드(CDN 서버)에 미리 저장해두고 클라이언트가 오리진 서버의 컨텐츠를 가져오는 상황에서, 접속하는 클라이언트의 가장 근처의 네트워크 노드에 저장된 컨텐츠를 가져오게된다. 이렇게 CDN 서버에 저장된 컨텐츠를 가져옴에 따라 오리진 서버로의 요청 수를 줄이게되어 서버의 부하를 줄일 수 있다. Cloudfront AWS에서 제공하는 CDN 서비스로, CDN 방식으로 운영되는 캐싱 기반 컨텐츠 전송 네트워크 서비스이다 전 세계에 위치한 Edge Location(엣지 로케이션)을 통해 웹 사이..