분류 전체보기

    [AWS] VPC구성하기(퍼블릭 서브넷, 프라이빗 서브넷)

    aws를 사용하면서 사실 VPC가 뭔지도 몰랐고 몰라도 사용하는데 문제가 없었다 그때는 그냥 서비스만 이용하느라 핵심만 빠르게 배우기 바빴다 이번에 제대로 다시 공부하려는 마음에 시작하려는데 처음이 VPC... 이 글을 쓰기 전 자료 찾아봐도 이해가 되지 않았다... CIDR인가... 아무튼 aws를 시작할 때 먼저 시작해볼 VPC에 대해 알아보자 VPC가 무엇인가 VPC는 프라이빗 클라우드를 만드는 데 가장 기본이 되는 리소스이다. VPC는 논리적인 독립 네트워크를 로 이름과 IPv4 CIDR 블록을 필수적으로 가지게 된다. CIDR 블록은 IP의 범위를 지정하는 방식인데. CIDR 블록은 IP 주소와 슬래시(/) 뒤에 따라오는 넷마스크 숫자로 구성되어 있다. 이 숫자는 IP 범위를 나타내며 이 숫자가..

    [Docker] ubuntu에서 docker & docker-compose 설치 방법

    이 글은 aws의 ubuntu 환경에서 진행된다는 점 참고하길 바란다 docker와 docker-compose 설치 방법은 도커 공식 독스에 설명되어있다 docker 설치 1. 기본적인 패키지들을 최신으로 업데이트를 하고 apt가 HTTPS를 통해 리포지토리를 사용하게 해주는 의존성 설치 $ sudo apt-get update && sudo apt-get install -y \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release 2. docker 공식 인증키 추가 $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --yes --dearmor -o /usr/share..

    [K8s] 쿠버네티스 Service 개념

    Service란 무엇인가? Kubernetes 서비스는 파드의 논리적 집합과 파드에 액세스하기 위한 정책을 정의하는 추상화다. 서비스를 사용하면 응용프로그램의 다른 부분이나 외부 클라이언트에 응용프로그램의 기능을 노출할 수 있다. 서비스는 포드에 트래픽을 로드 밸런싱하는 데 사용할 수 있으며 포드에 안정적인 DNS 이름 및 네트워크 정책을 제공하는 데도 사용할 수 있다. Kubernetes에서 서비스는 서비스 유형, 서비스가 수신해야 하는 포트 및 서비스가 대상으로 해야 하는 포드를 지정하는 YAML 파일에 의해 정의된다. 그런 다음 서비스는 로드 밸런서를 생성하고 클러스터 내부 또는 외부에서 서비스에 액세스하는 데 사용할 수 있는 안정적인 IP 주소 및 DNS 이름을 할당한다. 예를 들어, 여러 포드로..

    [Linux] 리눅스 표준 스트림과 파이프라인, 리다이렉션

    표준 스트림(Standrad Stream) 유닉스 이전의 대부분의 운영 체제에서, 프로그램은 명시적으로 적절한 입력 장치와 출력 장치에 연결해줄 필요가 있었다. 이 작업은 각 OS 마다 처리 방식이 달랐기 때문에 매우 방대한 작업이었다. 수많은 시스템에서 환경 설정을 제어하거나, 파일 테이블에 접근하거나, 필요한 데이터 셋을 결정하기 위해 펀치 카드 리더기나 자기 테이프 드라이브, 라인 프린터, 카드 펀치, 대화식 터미널을 적절하게 제어할 필요가 있었다. 이런 상황에서, 유닉스의 획기적인 발전 중 하나는 장치의 추상화였다. 프로그램은 더 이상 어떤 장치와 연결되는지 알 필요가 없었다. 유닉스는 기존의 복잡성을 데이터 스트림이라는 개념으로 해소 시켰다. 데이터 스트림은 순차적인 데이터 바이트들을 파일의 끝..

    [Linux] 프록시 서버의개념, NGINX 리버스 프록시와 캐싱

    리버스 프록시란 무엇인가? 리버스 프록시는 웹 서버 앞에 위치하며 클라이언트(예: 웹 브라우저) 요청을 해당 웹 서버로 전달하는 서버이다다. 리버스 프록시는 일반적으로 보안 , 성능 및 안정성을 높이는 데 도움이 되도록 구현된다. 리버스 프록시의 작동 방식과 제공할 수 있는 이점을 더 잘 이해하기 위해 먼저 프록시 서버가 무엇인지 정의해 보겠다. 프록시 서버란 무엇인가? 프록시, 프록시 서버 또는 웹 프록시라고도 하는 정방향 프록시는 클라이언트 시스템 그룹 앞에 있는 서버이다. 이러한 컴퓨터가 인터넷의 사이트 및 서비스에 요청을 하면 프록시 서버는 해당 요청을 가로챈 다음 중개인처럼 해당 클라이언트를 대신하여 웹 서버와 통신한다. 예를 들어 일반적인 정방향 프록시 통신과 관련된 3대의 컴퓨터 이름을 지정..

    [DevOps] 소켓과 포트의 특징, HTTP버전별 특징

    소켓(Socket)이란 무엇인가? 일반적으로 서버는 특정 컴퓨터에서 실행되며 특정 포트 번호에 바인딩된 소켓이 있다. 서버는 클라이언트가 연결 요청을 하기 위해 소켓을 수신 대기한다. 클라이언트 측에서: 클라이언트는 서버가 실행 중인 시스템의 호스트 이름과 서버가 수신 중인 포트 번호를 알고 있는데 연결 요청을 만들기 위해 클라이언트는 서버의 시스템 및 포트에서 서버와 연결을 시도하게 된다. 또한 클라이언트는 이 연결 중에 사용할 로컬 포트 ​​번호에 바인딩되도록 서버에 자신을 식별해야 한다. 일반적으로 시스템에서 할당한다. 모든 것이 순조롭게 진행되면 서버가 연결을 수락한다. 수락하면 서버는 동일한 로컬 포트에 바인딩된 새 소켓을 가져오고 remote endpoint도 클라이언트의 주소와 포트로 설정하..

    [K8s] 쿠버네티스 Deployment를 이용한 RollingUpdate

    Deployment RollingUpdate를 설명하기에 앞서 무중단 배포에 대해서 얘기 좀 해보겠다 무중단 배포 DevOps에서 말하는 CI&CD 지속적 통합 지속적 배포이다 예를 들자면 쇼핑몰의 서비스를 진행 중인데 고객 관련 로직을 수정을 해서 WAS를 업데이트 즉 새로운 버전으로 배포를 해야 한다 하지만 업데이트 시점에 구 버전을 다운시키고 신 버전을 업 시키게 되면 그 중간에 트래픽 전송을 못하는 시점이 생겨버린다 이 시간에 만약에 쇼핑몰을 이용한다면 어떻게 될까 쇼핑몰을 이용하는 사용자는 원활하게 서비스를 이용하지 못하며 서비스 운영자는 그 시간에 거래가 불가능하기에 금전적 손실이 어마어마하게 발생할 것이다 위의 예시는 조금 최악의 상황을 가정하여 들은 예시지만, 충분히 있을 법한 예시이다. ..

    [K8s] 쿠버네티스 Deployment의 개념

    Deployment 디플로이먼트(Deployment)는 파드와 레플리카셋(ReplicaSet)에 대한 선언적 업데이트를 제공한다. 디플로이먼트에서 의도하는 상태를 설명하고, 디플로이먼트 컨트롤러(Controller)는 현재 상태에서 의도하는 상태로 비율을 조정하며 변경한다. 새 레플리카셋을 생성하는 디플로이먼트를 정의하거나 기존 디플로이먼트를 제거하고, 모든 리소스를 새 디플로이먼트에 적용할 수 있다. 사용 사례 레플리카셋을 롤아웃 할 디플로이먼트 생성. 레플리카셋은 백그라운드에서 파드를 생성한다. 롤아웃 상태를 체크해서 성공 여부를 확인한다. 디플로이먼트의 PodTemplateSpec을 업데이트해서 파드의 새로운 상태를 선언한다. 새 레플리카셋이 생성되면, 디플로이먼트는 파드를 기존 레플리카셋에서 새로..