DevOps

    [K8s] 쿠버네티스 Pod의 개념과 환경변수

    파드(Pod)는 쿠버네티스에서 생성하고 관리할 수 있는 배포 가능한 가장 작은 컴퓨팅 단위이다. 파드 (고래 떼(pod of whales)나 콩꼬투리(pea pod)와 마찬가지로)는 하나 이상의 컨테이너의 그룹이다. 이 그룹은 스토리지 및 네트워크를 공유하고, 해당 컨테이너를 구동하는 방식에 대한 명세를 갖는다. 파드의 콘텐츠는 항상 함께 배치되고, 함께 스케줄 되며, 공유 콘텍스트에서 실행된다. 파드는 애플리케이션 별 "논리 호스트"를 모델링한다. 여기에는 상대적으로 밀접하게 결합된 하나 이상의 애플리케이션 컨테이너가 포함된다. 클라우드가 아닌 콘텍스트에서, 동일한 물리 또는 가상 머신에서 실행되는 애플리케이션은 동일한 논리 호스트에서 실행되는 클라우드 애플리케이션과 비슷하다. 쿠버네티스 공식 docs..

    [DevOps] 데이터베이스 정규화

    정규화 설명 정규화는 데이터베이스의 데이터를 구성하는 프로세스이다. 이 프로세스에는 중복성 및 일치하지 않는 종속성을 제거하여 데이터베이스의 유연성을 높이는 동시에 데이터를 보호하도록 설계된 규칙에 따라 테이블을 만들고 해당 테이블 간의 관계를 설정하는 작업이 포함됩니다. 데이터가 중복되면 디스크 공간이 낭비되며 유지 관리상의 문제가 발생하게된다. 여러 위치에 있는 데이터를 변경해야 하는 경우에는 모든 위치에서 데이터를 정확히 동일한 방식으로 변경해야 한다. 고객 주소 데이터가 Customers 테이블에만 저장되어 있고 데이터베이스의 다른 위치에는 없다면 고객 주소 변경을 구현하기가 훨씬 쉬워질 것입니다. 그렇다면 "일치하지 않는 종속성"이란 무엇일까? 특정 고객의 주소를 찾으려는 사용자는 자연스럽게 C..

    [Linux] NGINX 개념과 각 환경에서 설치방법

    '엔진 엑스' 로 발음되는 NGINX 는 널리 사용되는 오픈 소스 웹 서버 소프트웨어이다. 2002년 Igor Sysoev가 시작한 프로젝트였으며 2004년 10월에 공식적으로 출시되었다. 동시에 10,000개의 연결을 관리해야 하는 과제로 정의되는 C10k의 문제를 해결하기 위해 만들어졌다. Apache 서버 아파치 서버는 1995년에 나왔으며 nginx는 2002년에 출시됐다 왜 nginx를 사용하는지 왜 1등이되었는지 를 알기위해서는 아파치 서버가 만들어진 1995년부터 내려가보자 그당시에는 유닉스 기반으로 만들어진 최초의 웹서버 NCSA HTTPd 가 있었다 하지만 이 웹서버는 버그가 굉장히 많아서 개발자들이 수정하면서 변경하고 기능도 추가해서 만든게 아파치 서버다. 아파치 서버는 요청이 들어오면..

    [K8s] GKE(구글 쿠버네티스 엔진) 세팅 방법

    Google Kubernetes Engine(GKE)를 사용하는 방법을 알아보자. 클라우드를 사용하기위해서 옆의 주소로 들어가자 https://cloud.google.com/ 오른쪽에 무료로 시작하기 버튼을 누르고 회원가입하고 개인정보를 입력했다면 무료평가판이 시작되고 300$가 지급이되는데 90일 동안 사용가능하다는점 유의하길 바란다 만들었다면 쿠버네티스 클러스터를 만들어보자 만들기 누르고 표준 모드를 선택해주자 선택을 했으면 이름은 자유롭게 정하고 노드수는 3개로 해주고 만들기를 해주면 클러스터 구성은 완료된거다. 이제 구글 쿠버네티스 클러스터를 로컬과 연결해보자 로컬 환경에서 gcloud CLI를 사용하기위해서 설치해보자 https://cloud.google.com/sdk/docs/install 필..

    [Docker] docker 이미지 생성하기

    docker 이미지 Layer 구조 위의 그림에서 왼쪽은 docker image이고 오른쪽은 docker container이다 도커 이미지가 총 3가지 있는 것을 확인할 수 있는데 왼쪽부터 ubuntu, nginx 그리고 web app 이렇게 구성이 되어있다 여기서는 이해가 쉽게 nginx는 ubuntu이미지 기반으로 만들어졌다고 가정하고 web app는 nginx 이미지 기반으로 만들어졌다고 가정을 해보자 ubnutu 이미지를 보면 A, B, C 3가지의 Layer로 구성되어있다 실제로 docker image는 Layer 아키텍처라고 새로운 환경이 계속 쌓이는 구조로 되어있다 그렇기 때문에 nginx 이미지는 ubuntu 기반으로 만들어졌기 때문에 ubuntu Layer가 그대로 있는 상태에서 ngin..

    [k8s] 쿠버네티스의 개념 - 1

    쿠버네티스란 뭘까? 요즘 개발자라면 쿠버네티스가 얼마나 인기 있는지 잘 알고 있을 거다. 그러면 도대체 "왜" 인기가 있는 거고 "왜" 써야만 하는지 알아보려 한다. 쿠버네티스는 컨테이너화 된 워크로드와 서비스를 관리하기 위한 이식성이 있고, 확장 가능한 오픈소스 플랫폼이다. 쿠버네티스는 선언적 구성과 자동화를 모두 용이하게 해 준다. 쿠버네티스는 크고, 빠르게 성장하는 생태계를 가지고 있다. 쿠버네티스 서비스, 기술 지원 및 도구는 어디서나 쉽게 이용할 수 있다. 쿠버네티스란 명칭은 키잡이(helmsman)나 파일럿을 뜻하는 그리스어에서 유래했으며 K8s라는 표기는 "K"와 "s"와 그 사이에 있는 8글자를 나타내는 약식 표기이다. 구글이 2014년에 쿠버네티스 프로젝트를 오픈소스 화했다. 쿠버네티스는..

    [DevOps] HTTP가 뭐길래

    HTTP의 사전적 의미 하이퍼텍스트 전송 프로토콜(HTTP) 은 HTML과 같은 하이퍼미디어 문서를 전 송하기 위한 애플리케이션 레이어 프로토콜이다. 웹 브라우저와 웹 서버 간의 커뮤니케이션을 위해 디자인되었지만, 다른 목적으로도 사용될 수 있다. HTTP는 클라이언트가 요청을 생성하기 위한 연결을 연 다음 응답을 받을 때까지 대기하는 전통적인 클라이언트-서버 모델을 따른다. HTTP는 무상태 프로토콜이며, 이는 서버가 두 요청 간에 어떠한 데이터(상태)도 유지하지 않음을 의미한다. HTTP의 흐름 클라이언트가 서버와 통신하고자 할 때, 최종 서버가 됐든 중간 프록시가 됐든, 다음 단계의 과정을 수행한다: TCP 연결을 연다:TCP 연결은 요청을 보내거나(혹은 여러개의 요청) 응답을 받는 데 사용된다. ..

    [DevOps] DNS 너 어떻게 작동하는건데!!!

    DNS(Domain Name System)란? DNS는 인터넷 전화번호부이다. 대부분 naver.com 또는 google.com과 같은 도메인 이름을 통해 온라인으로 정보에 액세스 한다. 웹 브라우저는 인터넷 프로토콜(IP) 주소를 통해 상호작용한다. DNS는 브라우저가 인터넷 자원을 로드할 수 있도록 도메인 이름을 IP 주소로 변환한다. 인터넷에 연결된 각 기기에는 다른 컴퓨터가 기기를 찾는 데 사용하는 고유한 IP 주소가 있다. DNS 서버를 사용하면 사람이 192.168.1.1(IPv4의 경우)과 같은 IP 주소 또는 2400:cb00:2048:1::c629:d7 a 2(IPv6의 경우)처럼 영문과 숫자로 된 복잡한 IP 주소를 기억할 필요가 없다. DNS 작동 방식 DNS 서버는 URL과 도메인 ..