TIL

    [Kafka] 기본 개념 및 이해

    Apache Kafka란? 이벤트 스트리밍 플랫폼 실시간으로 흐르는 이벤트 스트림을 받아주고 이벤트를 필요로 하는 곳으로 이벤트를 전달한다. 이벤트? 비즈니스에서 일어나는 모든 일(데이터)을 의미 ex) 웹사이트에서 뭔가 클릭하는것. 돈을 송금하는 것 등 이벤트는 bigdata의 특징을 가짐 -> 비즈니스의 모든 영역에서 광범위하게 발생하기 때문 이벤트 스트림은 연속적인 많은 이벤트들의 흐름을 의미 이렇게 많은 이벤트들을 처리하기 위해 LinkedIn에서 개발된 것이 Apache Kafka 3가지 특징 1. 이벤트 스트림을 안전하게 전송 (publish & Subscribe 기능) 2. 이벤트 스트림을 디스크에 저장함 (아파치 카프카 이전의 솔루션들과의 차이점. Write to Disk) 3. 이벤트 스..

    [쿠버네티스/도커] 3 - 쿠버네티스에서의 도커, 젠킨스, 프로메테우스, 그라파나

    도커 쿠버네티스를 이루는 기본 오브젝트가 파드고, 파드는 컨테이너로 이루어져 있다. 그리고 컨테이너를 만들고 관리하는 도구가 도커이다. 도커를 사용하면 사용자가 따로 신경 쓰지 않아도 컨테이너를 생성할 때 개별적인 실행 환경을 분리하고 자원을 할당한다. 간단하게 도커 이미지를 내려받아 컨테이너로 실행하고 도커 이미지와 컨테이너를 삭제하는 방법을 알아보자. 컨테이너 이미지는 우리가 앞서 얘기했던 베이그런트 이미지와 유사하다. 이미지 그대로는 사용할 수 없고 도커와 같은 CRI로 불러들여야 컨테이너가 실제로 작동한다. 컨테이너 이미지는 도커 허브(https://hub.docker.com)와 같은 레지스트리(registry)에 모여있다. 레지스트리는 저장소를 의미하는데 docker search 명령어를 입력하..

    [쿠버네티스/도커] 2 - 쿠버네티스란, 쿠버네티스 기본 사용법

    3장 환경 세팅 이제 쿠버네티스로 컨테이너 인프라 환경을 자동으로 구축해보자. 위에서 언급했듯이 컨테이너 인프라 환경이란 운영 체제의 커널 하나에서 여러 개의 컨테이너가 격리된 상태로 실행되는 인프라 환경이다. 컨테이너는 가상머신과 많이 비교된다. 가상머신 VS 컨테이너? AWS에서는 가상머신과 컨테이너를 애플리케이션을 IT 인프라 리소스로부터 독립적으로 만드는 배포 기술이라고 정의한다. 두 기술은 공통적으로 소프트웨어 인프라를 이미지 파일이라는 단일 파일로 패키징할 수 있도록 해서 편리하게 애플리케이션을 어디서나 실행할 수 있도록 해준다. 두 기술은 각각 아래와 같이 설명할 수 있다. 가상머신은 물리적 머신의 디지털 사본이다. 기존의 컴퓨터, 즉 호스트OS 위에 원하는 운영체제를 가상화한 게스트OS를 ..

    [쿠버네티스/도커] 1 - 컨테이너 인프라 환경이란, 테스트 환경 구성

    회사에서 쿠버네티스를 사용한다는 것은 알고 있었지만 직접적으로 개발하진 않기 때문에 단순 반복해서 사용만 해왔다. 하지만 전체적인 구조와 사용하는 툴에 대한 기본적인 정보를 파악하고 싶어 컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커 도서를 읽고 서칭한 내용을 간단하게 정리해본다. 1장 - 컨테이너 인프라 환경이란 이 책의 큰 주제 중 하나인 컨테이너 인프라 환경의 정의는 다음과 같다. 컨테이너 인프라 환경: 컨테이너를 중심으로 구성된 인프라 환경 컨테이너: 하나의 운영 체제 커널에서 다른 프로세스에 영향을 받지 않고 독립적으로 실행되는 프로세스 상태 과거에 모놀리식 아키텍쳐를 사용하다가 서비스가 커지고 다양해짐에 따라 마이크로소프트 서비스 아키텍쳐(MSA)가 많이 채용이 되고 있고, MSA를 구현하..

    무중단 배포 전략 - 롤링, 블루-그린, 카나리 배포

    서비스가 과거 모놀리식 구조에서 MSA(Micro Service Architecture) 구조로 쪼개지고 배포 주기도 짧아지면서 배포 방식 또한 변화가 생겼다. 기존 서버를 종료하고 새로운 버전의 서버를 실행하는 중단 배포 방식(유저가 서비스를 이용할 수 없는 시간인 downtime이 존재한다.)보다는 서비스가 중단되지 않는(zero-downtime) 무중단 배포 방식을 많이 채용한다. 무중단 배포(Zero-downtime deployment)에는 서비스가 중단되지 않은 상태로 새로운 버전을 사용자들에게 배포하는 것을 의미한다. 무중단 배포를 하기 위해서는 최소 서버가 2대 이상 필요하다. 가장 많이 알려져 있는, 무중단 배포의 3가지 전략, 롤링 배포, 블루-그린 배포 그리고 카나리 배포에 대해 알아보..

    Express 폴더 구조

    Express 폴더 구조 Express로 개발을 하면서 느꼈던 장점 중 하나가 자유도가 높다는 점이다. 폴더 구조나 툴, 미들웨어 등 선택할 수 있는 폭이 넓다. 하지만 큰 규모의 프로젝트를 해본적이 없는 나에겐 틀이 없다는게 더 어렵게 느껴졌다. (그래서 어느정도의 구조가 정해져 있는 nestjs가 나온걸수도..!) 그래서 검색을 해보다가 nestjs라는 좋은 프레임워크를 발견했지만 이미 개발을 시작한 상황에서 프레임워크를 변경하기는 어려웠다. + nestjs에 대해 조금 훑어보다가 Spring의 구조와 비슷한걸 깨달았다. 최근에 Spring을 공부하고 있는데 처음에는 구조 파악이 어려웠는데 이제 뭔가 느낌을 알 것 같은 그런 느낌..!! 프로젝트 초반에 가장 고민했던 부분은 프로젝트 구조였다. 어떤 ..

    swagger

    Swagger 프런트엔드와 협업을 하는 과정에서 api 명세는 노션에 기록하고 있었다. 초반에 개발할 당시에는 api의 개수가 많지 않아 부담감이 적었지만 그 수가 많아지면서 앱서버도 개발해야하는 입장이 되자 혼자서 감당하기 힘들겠다는 생각이 들었다. 매번 노션에 들어가서 api의 명세를 바꾸는 것도 비효율적이라는 생각이 들었고, 혹시라도 빼먹게 되면 프런트 개발자 입장에서 매우 힘들어질 것이기 때문이다. 따라서 개발할 때는 호다닥 개발을 하더라도 후에 유지 보수를 할 때 상당한 시간 소모가 있을 것이다. 이런 문제를 깨닫고 분명 우리 개발자들은 무언가를 개발해 놓았을 것이다라는 생각이 들어 구글링을 해보았다. 역시! api 명세를 위한 툴인 "swagger"라는 것이 있었고 이미 큰 기업부터 작은 스타..

    21.06.22/ 애자일 방법론, HTTP 상태코드

    애자일 방법론 - 스크럼 Rest API를 위한 HTTP 상태 코드 오랜만에 기말고사를 끝내고 돌아와서 다시 TIL작성을 시작한다. 오늘은 이번에 개발팀에 도입하게된 애자일 방법론 중 스크럼, 그리고 Rest API 응답코드에 대해서 써봐야지. 애자일 방법론 - 스크럼 짧았던 몇 개월동안 새로운 프로젝트를 진행하면서 느꼈던 것은 일정관리가 쉽지 않다는 것이다. 기획과 디자인이 완성된 상태에서 시작한 것도 아니고 기존 사이트의 유지보수도 함께 진행해야해서 예상했던 일정에서 계속 고쳐나가야 했다. 학교 중간, 기말고사까지 겹쳐 일정이 밀리고 밀리는 과정에서 '아.. 대책이 필요하다'라는 생각이 들었다. 소프트웨어 공학이라는 수업에서 배웠고, 정보처리기사에서 한번 더 공부한 애자일 방법론이 생각났다. 빠른 반..