본문 바로가기

728x90
반응형

전체 글

(85)
[쿠버네티스] 쿠버네티스에서 yaml config 파일 작성하는 방법과 pod 만들어보기 쿠버네티스에서 YAML config 파일 작성법 쿠버네티스는 yaml 기반의 config 파일(명세서) 로 pod, replica, deployment 등을 만들 수 있습니다. 이러한 config 파일은 항상 아래의 기본 구조를 따르게 됩니다. apiVersion: kind: metadata: spec: 위의 4개 속성들이 상위 레벨의 속성들로, 필수 필드이기 때문에 항상 config 파일에 항상 포함되어 있어야합니다. 상위 속성에 대해 간단하게 알아봅시다. apiVersion 개체를 생성할 때 몇버전의 쿠버네티스를 기반으로 선언할 것인지 알려주는 곳입니다. 기본적으로 아래와 같이 version 을 기재할 수 있으며, 아래의 표 외에도 autoscaling/v1 와 같이 필요한 기능에 따라 다른 apiV..
[쿠버네티스] 쿠버네티스의 기본 구성요소 쿠버네티스의 기본 컴포넌트 쿠버네티스를 이루고 있는 기본적인 컴포넌트들에 대해서 간단하게 알아보도록 하겠습니다. 쿠버네티스 클러스터는 Worker Node (또는 Slave Node) 으로 불리우는 노드와, Master Node (또는 Control Node) 라고 하는 노드들로 구성되어있습니다. Worker Node 는 실제로 컨테이너와 어플리케이션들이 배포되는 Node 이며, Master Node는 이러한 Worker Node 의 상태, 컨테이너의 배포 등을 관리하는 역할을 하게 됩니다. Worker Node 인지 Master Node 인지에 따라 노드에 올라가는 컴포넌트는 아래와 같이 달라지게 됩니다. Master Node 컴포넌트 API Server (kube-apiserver) 쿠버네티스의 프론..
클라우드란? 클라우드 개념 쉽고 간단하게 이해하기 클라우드를 간단하게 정의하자면... 클라우드란 인터넷을 통해 컴퓨팅 자원을 제공할 수 있도록 구성되어 있는 IT 환경을 의미합니다. 이러한 환경을 클라우드 서비스를 통해 인터넷으로 제공되어, 사용자가 자신의 컴퓨터나 모바일 기기에서 언제 어디서나 컴퓨팅 자원을 사용할 수 있도록 해줍니다. 즉, 인프라와 서버를 구성하는 데에 필요한 네트워크, 스토리지 등을 인터넷을 통해 클라우드 컴퓨팅 기술을 기반으로 다른 사용자와 나눠 쓰는 것이라고 볼 수 있습니다. 흔히 우리가 아는 AWS, Azure, Google Cloud 와 같은 네트워크 서비스 제공업체(cloud provider)가 이런 컴퓨팅 자원들을 관리해주고, 보안이나 관리 서비스 등을 제공하는 역할을 하고 있습니다. 클라우드를 사용하기 전에는 어떤 방식..
[Spring Boot] Spring Boot의 dependency Spring Boot는 Spring에 비해 dependency 를 더 편하게 관리할 수 있도록 기능을 제공하고 있습니다. 이번 글에서는 이 dependency와 관련된 개념들을 알아보겠습니다. 프로젝트 빌드 도구 : Maven, Gradle 프로그램이 동작하기 위해서는 소스 코드를 실행 가능한 상태로 만들 수 있도록 하는 변환 과정 및 결과물이 필요한데, 이를 빌드라고 합니다. 이 때 결과물은 우리가 흔히 아는 .war이나 .jar의 형태 등이 있습니다. 빌드를 위해서는 라이브러리 다운, 의존성 확인, 테스트, 컴파일 등의 작업이 필요한데 이러한 과정을 개발자가 수동으로 하기에는 번거롭기 때문에 빌드 도구를 이용하여 자동적으로 이러한 작업들을 해줍니다. Spring Boot가 공식적으로 지원하는 프로젝..
개발자를 위한 도커(Docker)의 기본 개념 (2) - 쿠버네티스편 쿠버네티스(Kubernetes)란? 컨테이너 운영을 자동화하기 위한 컨테이너 오케스트레이션 도구. 여러 서버에 걸쳐있는 컨테이너들이 협조적으로 연동될 수 있도록 API, CLI(kubectl) 등을 제공하는 통합 시스템입니다. 대표적인 기능으로는 서버 리소스를 효율적으로 사용할 수 있도록 하기 위한 컨테이너 배채, 스케일링, 로드밸런싱, 헬스 체크 등이 있습니다. 쿠버네티스는 아래와 같은 리소스를 연동하고 협조함으로써 컨테이너 시스템을 구성하게 됩니다. 리소스 용도 노드(Node) 컨테이너가 배치되는 서버 네임스페이스 쿠버네티스 클러스터 내의 가상 클러스터 파드(Pod) 컨테이너 집합 중에서 가장 작은 단위이며, 컨테이너 실행 방법을 정의함 레플리카세트 같은 스펙을 갖는 파드를 여러개 복제 및 생성하여 ..
개발자를 위한 도커(Docker)의 기본 개념 (1) - 도커편 도커(Docker) 컨테이너형 가상화 기술을 구현하기 위한 상주 애플리케이션 dockerd와 이 dockerd를 조작하기 위한 명령행 도구인 CLI로 구성된 프로덕트. 배포에 특화된 기술로 애플리케이션을 개발하고 운영하는 것을 컨테이너 단위로 할 수 있도록 돕습니다. (ex. 애플리케이션 실행을 위해서 필요한 환경 구축에 큰 리소스를 들이지 않아도 됩니다. 도커만 설치되어있다면 구성파일(Dockerfile..)과 명령어로 다른 곳과 동일한 가상환경을 구축해낼 수 있기 때문) 도커의 사용 의의 도커를 사용하면 구축 환경 차이로 인한 문제를 미리 방지할 수 있습니다. 인프라를 새로 구축하거나 복제할 때 미들웨어가 다르다거나, 라이브러리 버전이 다르다거나 하여 생길 수 있는 문제를 도커를 통해 동일한 환경을 ..
[한권떼기] 운영체제 06번째. Address Space와 Segmentation, Paging **본 글의 일부분은 서적 'Operating Systems: Three Easy Pieces by Remzi H.Arpaci-Dusseau, Andrea C.Arpaci-Dusseau', 'Operation System Concepts Abraham Silberschatz 외 2' 내의 이미지와 내용을 포함하고 있습니다 Address Space Memory virtualization 물리적인 메모리는 한개이지만, 마치 프로세스들이 각자 하나씩 들고 있는 것처럼 함 여러 개의 프로세스를 구동하기 위해서는 프로세스에 대한 데이터가 Physical Memory에 올라가 있어야 함 따라서 프로세스 하나하나에 physical memory를 추상화한 모습을 가진 address space를 부여하고, address..
[한권떼기] 운영체제 08번째. Thread와 Lock, Semaphore **본 글의 일부분은 서적 'Operating Systems: Three Easy Pieces by Remzi H.Arpaci-Dusseau, Andrea C.Arpaci-Dusseau', 'Operation System Concepts Abraham Silberschatz 외 2' 내의 이미지와 내용을 포함하고 있습니다 Thread CPU utilization의 기본 단위이며, 하나의 프로세스가 여러 개의 쓰레드를 가질 수 있음 100개의 요청이 들어온다고 가정할 때, 프로세스가 하나만 있다면 1개의 요청을 처리하기 위해서 99개의 요청이 대기해야 함 이를 해결하기 위해서 100개의 프로세스를 만들 수 있다면 좋겟지만, 메모리 공간이 많이 필요하고 프로세스 생성에 걸리는 시간때문에 비효율적임 따라서 c..
[한권떼기] 운영체제 08번째. 메모리 스와핑과 페이지 교체 알고리즘 **본 글의 일부분은 서적 'Operating Systems: Three Easy Pieces by Remzi H.Arpaci-Dusseau, Andrea C.Arpaci-Dusseau', 'Operation System Concepts Abraham Silberschatz 외 2' 내의 이미지와 내용을 포함하고 있습니다 Swapping 매커니즘 우리가 사용하는 메모리는 Mass Storage(HDD, SDD..) -> Main Memory -> Cache(CPU내에 존재) -> Registers 순으로 크기가 작고, 속도가 빠름 따라서 Main Memory(physical memory)에 모든 페이지를 다 넣을 수 없기 때문에 페이지 중 일부는 memory에서 삭제되어 disk에서 조회해야 함 Page..
[한권떼기] 운영체제 05번째. 멀티프로세서 스케쥴링 **본 글의 일부분은 서적 'Operating Systems: Three Easy Pieces by Remzi H.Arpaci-Dusseau, Andrea C.Arpaci-Dusseau', 'Operation System Concepts Abraham Silberschatz 외 2' 내의 이미지와 내용을 포함하고 있습니다 멀티프로세서 스케쥴링 멀티코어란 하나의 칩에 여러 개의 CPU(=프로세서)가 있는 것 단순히 멀티코어를 사용했다고 해서 성능이 향상되지는 않으며, 프로그램단에서 쓰레드를 이용해 병렬처리를 해야 성능이 좋아짐 캐시의 통일성(coherence) 문제 멀티코어 환경에서 캐시 불일치 문제가 아래와 같이 생길 수 있음 CPU0이 메모리에서 A를 읽어 캐시에 저장 -> 메모리에서 A가 A'로 바뀜..

728x90
반응형