클라우드 컴퓨팅 & NoSQL

    DevOps란?

    DevOps란?

    이번 포스트에서 다루는 주제는 DevOps 기술에 대한 배경지식이다. DevOps란? Dev(개발팀) + Ops(운용팀)이 긴밀히 협조하여 비즈니스 측면 가치를 높이는 근무방식과 문화를 의미한다. DevOps 문화가 생긴 배경은 다음과 같다. 최신 서비스들은 짧은 기간에 기능 추가나 개선에 대한 요구사항들이 발생하고 이를 대응해야 한다. 애자일(Agile) 개발 기법은 소규모 개발을 전제로 필요한 최소한의 요건들을 적용하여 Release를 하고 고객의 피드백을 반영하며 지속적으로 서비스를 개선되는 개발 기법이다. 애자일 방식으로 개발을 하다 보니 애플리케이션이 빠르게 Release 되어서 좋은데, 운용 환경이 이를 따라가지 못하는 현상이 발생하게 된다. 운영팀이 추구하는 것은 서비스의 안정화이기 때문이다..

    컨테이너 오케스트레이션(Container Orchestration)이란?

    컨테이너 오케스트레이션(Container Orchestration)이란?

    이번 포스트에서는 RedHat에서 정의한 컨테이너 오케스트레이션(Container Orchestration)에 대해서 정리해 보았다. 컨테이너 오케스트레이션: 컨테이너의 배포, 관리, 확장, 네트워킹을 자동화 하는 기술을 말한다. 1. 컨테이너 오케스트레이션이 사용되는 분야 프로비저닝 및 배포 설정 및 스케줄링 리소스 할당 컨테이너 가용성 증가 인프라 전반의 워크로드 밸런싱을 기반으로 컨테이너 스케일링 또는 제거 로드 밸런싱 및 트래픽 라우팅 컨테이너 모니터링 실행될 컨테이너를 기반으로 애플리케이션 설정 컨테이너 간 보안유지 2. 컨테이너 오케스트레이션 툴 Docker Swarm Apache Mesos 쿠버네티스(Kubernetes) 3. 컨테이너 오케스트레이션의 작동 방식 쿠버네티스와 같은 컨테이너 오..

    쿠버네티스(Kubernetes) 공식 튜토리얼 #7

    쿠버네티스(Kubernetes) 공식 튜토리얼 #7

    이번 포스팅에서는 지난 포스팅에 이어 공식 튜토리얼 마지막 단계인 6단계를 실습해 보도록 한다. 2021.04.04 - [클라우드 컴퓨팅 & NoSQL] - 쿠버네티스(Kubernetes) 공식 튜토리얼 #6 쿠버네티스(Kubernetes) 공식 튜토리얼 #6 이번 포스팅에서는 지난 포스팅에 이어 공식 튜토리얼 5단계를 실습해 보도록 한다. 2021.04.03 - [클라우드 컴퓨팅 & NoSQL] - 쿠버네티스(Kubernetes) 공식 튜토리얼 #5 쿠버네티스(Kubernetes) 공식 튜토리 devlos.tistory.com 튜토리얼 모듈 6은 "Performing a Rolling Update"에 관한 것이다. 이번 시나리오의 목표는 deploy된 애플리케이션을 Kubectl set imagne로 ..

    쿠버네티스(Kubernetes) 공식 튜토리얼 #6

    쿠버네티스(Kubernetes) 공식 튜토리얼 #6

    이번 포스팅에서는 지난 포스팅에 이어 공식 튜토리얼 5단계를 실습해 보도록 한다. 2021.04.03 - [클라우드 컴퓨팅 & NoSQL] - 쿠버네티스(Kubernetes) 공식 튜토리얼 #5 쿠버네티스(Kubernetes) 공식 튜토리얼 #5 이번 포스팅에서는 지난 포스팅에 이어 공식 튜토리얼 4단계를 실습해 보도록 한다. 2021.04.02 - [클라우드 컴퓨팅 & NoSQL] - 쿠버네티스(Kubernetes) 공식 튜토리얼 #4 쿠버네티스(Kubernetes) 공식 튜토리 devlos.tistory.com 튜토리얼 모듈 5는 "Running Multiple Instances of Your App"에 관한 것이다. 쿠버네티스 kubectl scale을 이용하여 Depolyment를 확장하고 로드벨..

    쿠버네티스(Kubernetes) 공식 튜토리얼 #5

    쿠버네티스(Kubernetes) 공식 튜토리얼 #5

    이번 포스팅에서는 지난 포스팅에 이어 공식 튜토리얼 4단계를 실습해 보도록 한다. 2021.04.02 - [클라우드 컴퓨팅 & NoSQL] - 쿠버네티스(Kubernetes) 공식 튜토리얼 #4 쿠버네티스(Kubernetes) 공식 튜토리얼 #4 이번 포스팅에서는 지난 포스팅에 이어 공식 튜토리얼 3단계를 실습해 보도록 한다. 2021.04.01 - [분류 전체보기] - 쿠버네티스(Kubernetes) 공식 튜토리얼 #3 쿠버네티스(Kubernetes) 공식 튜토리얼 #3 이 devlos.tistory.com 튜토리얼 모듈 4는 service를 이용하여 어플리케이션을 expose 하는 방법에 대한 것이다. 1. kubectl get pods 실행 $ kubectl get pods 이전 포스트에서 언급했드..

    쿠버네티스(Kubernetes) 공식 튜토리얼 #4

    쿠버네티스(Kubernetes) 공식 튜토리얼 #4

    이번 포스팅에서는 지난 포스팅에 이어 공식 튜토리얼 3단계를 실습해 보도록 한다. 2021.04.01 - [분류 전체보기] - 쿠버네티스(Kubernetes) 공식 튜토리얼 #3 쿠버네티스(Kubernetes) 공식 튜토리얼 #3 이번 포스팅에서는 지난 포스팅에 이어 공식 튜토리얼 2단계를 실습해 보도록 한다. 2021.04.01 - [분류 전체보기] - 쿠버네티스( Kubernetes) 공식 튜토리얼 #2 쿠버네티스( Kubernetes) 공식 튜토리얼 #2 이 devlos.tistory.com 튜토리얼 모듈 3는 kubectl 을 이용하여 Kubernetes 어플리케이션의 trubleshooting을 하는 방법에 대한 것이다. 1. kubectl get 실행 $ kubectl get pods Kube..

    쿠버네티스(Kubernetes) 공식 튜토리얼 #3

    쿠버네티스(Kubernetes) 공식 튜토리얼 #3

    이번 포스팅에서는 지난 포스팅에 이어 공식 튜토리얼 2단계를 실습해 보도록 한다. 2021.04.01 - [분류 전체보기] - 쿠버네티스( Kubernetes) 공식 튜토리얼 #2 쿠버네티스( Kubernetes) 공식 튜토리얼 #2 이번 포스팅에서는 지난 포스팅에서 소개했던 쿠버네티스 공식 튜토리얼 2021.03.31 - [클라우드 컴퓨팅 & NoSQL] - 쿠버네티스( Kubernetes) 공식 튜토리얼 #1 쿠버네티스( Kubernetes) 공식 튜토리얼 #1 쿠버 devlos.tistory.com 튜토리얼 모듈 2는 쿠버네티스에 App을 deploy 하는 기능에 대한 것이다. 1. kubectl version 클릭 $ kubectl version 다음으로 kubectl의 버전을 확인하는 명령어를 ..

    쿠버네티스( Kubernetes) 공식 튜토리얼 #2

    쿠버네티스( Kubernetes) 공식 튜토리얼 #2

    이번 포스팅에서는 지난 포스팅에서 소개했던 쿠버네티스 공식 튜토리얼 2021.03.31 - [클라우드 컴퓨팅 & NoSQL] - 쿠버네티스( Kubernetes) 공식 튜토리얼 #1 쿠버네티스( Kubernetes) 공식 튜토리얼 #1 쿠버네티스 공식 도큐먼트를 확인하다가 6가지의 기초 튜토리얼 과정을 소개한다. 대화형 튜토리얼을 사용해서 다음과 같은 내용을 배울 수 있다. 컨테이너화 된 애플리케이션을 클러스터에 배 devlos.tistory.com 중에서 클러스터 생성하기를 실습해 보도록 한다. 1. 실습하기 선택 다음 그림과 같이 대화형 튜토리얼 시작하기 버튼을 누르면 가상의 CLI 환경이 보인다. 첫 번째 모듈은 쿠버네티스 클러스터를 실행하는 과정을 실습할 수 있도록 환경을 제공한다. 터미널 창에 ..

    쿠버네티스( Kubernetes) 공식 튜토리얼 #1

    쿠버네티스( Kubernetes) 공식 튜토리얼 #1

    쿠버네티스 공식 도큐먼트를 확인하다가 6가지의 기초 튜토리얼 과정을 소개한다. 대화형 튜토리얼을 사용해서 다음과 같은 내용을 배울 수 있다. 컨테이너화 된 애플리케이션을 클러스터에 배포하는 법 디플로이먼트 스케일링하기 컨테이너화 된 애플리케이션을 새로운 버전으로 업데이트하기 컨테이너화된 애플리케이션 디버그 하기 환경: Minikube 본 튜토리얼을 활용하면 지금까지 학습한 개념들을 체감하는데 도움이 될 것 같다. 서버를 준비할 필요 없이 브라우저 CLI 환경으로 튜토리얼 진행 가능하다. 다음 글에서 튜토리얼을 진행내용을 정리해 보려고 한다. 2021.04.01 - [분류 전체보기] - 쿠버네티스( Kubernetes) 공식 튜토리얼 #2 쿠버네티스( Kubernetes) 공식 튜토리얼 #2 이번 포스팅에..

    쿠버네티스 컴포넌트(component)

    쿠버네티스 컴포넌트(component)

    쿠버네티스의 아키텍처를 이해하기 위해 공식 설명자료에 있는 도식을 여러 문헌을 참고하여 작성해 보았다. 역시 여러 문헌을 참고하다보니 애매모호한 부분이 많이 사라지는 것 같다. 다음은 새로 정리한 쿠버네티스 클러스터 다이어그램이다. 공식 문서에는 더욱 자세한 내용이 있으니 참고하면 좋을 것 같다. 참고자료 [1] kubernetes.io | Kubernetes Component | 링크 Kubernetes Components A Kubernetes cluster consists of the components that represent the control plane and a set of machines called nodes. kubernetes.io [2] 15단계로 배우는 도커와 쿠버네티스 | 타..

    쿠버네티스(Kubernetes)가 해결하는 과제

    쿠버네티스(Kubernetes)가 해결하는 과제

    2021.03.28 - [클라우드 컴퓨팅 & NoSQL] - 쿠버네티스(Kubernetes) 란? 이전 글에 이어서 쿠버네티스가 해결하는 과제에 대해서 살펴본다. 도커(Docker)와 쿠버네티스를 이용해 해결할 수 있는 9가지 과제 1. 애플리케이션의 빈번한 출시 대응 쿠버네티스의 롤아웃(roll-out)과 롤백(roll-back) 기능은 새로운 기능을 빈번하게 출시하고 버그 수정을 긴급 투입하는 것과 같은 민감한 작업을 안전하게 자동화해 준다. 정식 운영 중인 서비스의 애플리케이션 컨테이너를 무정지로 교체할 수 있다. 2. 무정지 서비스 쿠버네티스의 자기 회복 기능은 무정지 서비스 운영을 도와준다. 응답이 없어진 컨테이너를 재기동하며, 쿠버네티스 클러스터 내에 지정한 수만큼 컨테이너가 돌도록 관리해 준..

    쿠버네티스(Kubernetes) 란?

    쿠버네티스(Kubernetes) 란?

    쿠버네티스(Kubernetes) '컨테이너(Container)화된 애플리케이션을 효율적으로 배포하고 운영하기 위해 설계된 오픈 소스 플랫폼'이다. 공식 설명: 컨테이너화 된 워크로드와 서비스를 관리하기 위한 이식할 수 있고, 확장 가능한 오픈소스 플랫폼 - Kubernetes.io 쿠버네티스의 필요성 컨테이너 운영환경이 필요한 이유에 대해서는 조대협 선생님께서 잘 정리해놓으셔서 블로그 글의 내용을 인용하였다. 컨테이너를 하드웨어나 VM에 배포하여 사용하게 될 경우 적은 수라면 수동으로 직접 배포하면 되지만, 하드웨어와 컨테이너의 수가 많아지면 이 컨테이너를 어디에 배포해야 하는지에 대한 결정이 필요하다. 애플리케이션의 특성에 따라서, 같은 물리 서버에 배포가 되어야 하거나 또는 가용성을 위해서 일부러 다..

    Redis & Maria DB

    Redis & Maria DB

    현재 근무하는 스타트업에서 프로젝트 진행할 때 Redis와 MariaDB를 주로 사용한다. 각 DB의 장점을 간단하게 설명하자면 다음과 같다. Redis Redis 는 주로 캐시기능 구현 혹은 Server에서 임시적으로 데이터를 저장할 때 사용한다. Key-value 기반 데이터베이스이고 expire라는 기능을 제공하여 지금으로부터 특정 시점 이후 사용하지 않는값을 삭제하기 용이하다. In-memory database이기 때문에 속도가 빠르고 여러가지 관계에 대한 제약사항이 없기 때문에 NodeJS process 간 공유하는 저장공간을 구현하는데 안성맞춤이다. (물론 RDBMS처럼 시스템의 기본 DB를 Redis로 구성할 수도 있다. 곧 2년간 진행한 Redis 기반 IoT 플랫폼 개발에 관한 글을 작성..

    [Docker] Container 를 사용하는 이유

    [Docker] Container 를 사용하는 이유

    Container를 사용하는 이유는 다음과 같다. 인프라의 사용률 향상 하나의 서버 위에서 여러 개의 Container를 사용할 수 있는데 이렇게 되면 여러 개의 서비스를 하나의 서버에서 동작시킬 수 있으므로 CPU와 메모리 사용률을 높여 하드웨어를 효율적으로 이용할 수 있다. 빠른 속도로 인프라 구축 가능 운영체제, 애플리케이션, 미들웨어 등 다양한 이미지를 쉽게 얻을 수 있다. Docker의 경우 Docker Hub에서 여러 사람들이 만들어놓은 이미지를 받을 수 있다. 또한 설치 작업이나 설정 작업이 현저히 줄어들고, 환경설정 및 Dependency를 오브젝트로 작성할 수 있다. 불변 실행 환경 애플리케이션 실행에 필요한 모든 재원을 포함하여 컨테이너를 작성할 수 있다. 오픈소스 프로젝트는 빈번하게 ..

    [Docker] Maria DB container 백업하기

    [Docker] Maria DB container 백업하기

    Docker를 이용하여 Maria DB를 사용할 때 백업을 진행하려면 다음의 공식 가이드를 참고한다. hub.docker.com/_/mariadb mariadb We and third parties use cookies or similar technologies ("Cookies") as described below to collect and process personal data, such as your IP address or browser information. You can learn more about how this site uses Cookies by reading our privacy policy hub.docker.com Creating database dumps $ docker exec..

    CI/CD 란?

    CI/CD 란?

    CI(Continuous integration) 지속적 통합을 의미한다. 지속적 통합이란 소프트웨어 개발 시 테스트 단계에서만 테스트하는 것이 아니라 일상적으로 빌드와 테스트를 수행하여 실제 동작을 확인하는 사이클을 돌면서 소프트웨어 품질을 관리하는 것을 의미한다. CD(Continuous delivery & Continuos Deployment) 지속적 배포를 의미한다. CI의 범위를 확장해서 통합 테스트를 위한 스테이징 환경에 배포, 그리고 정식 서비스 배포까지 자동화 도구를 사용하여 수행하는 것을 의미한다. CI/CD examples The following table lists examples with step-by-step tutorials that are contained in this sec..