목록전체 글 (145)
천천히 빛나는
Kafka의 기본 구성 (Topic, Consumer, Producer)프로듀서: 카프카에 메시지를 전달하는 서버컨슈머: 카프가의 메시지를 처리하는 서버토픽: 카프카에 넣을 메시지를 구분하는 개념 (카테고리)Kafka는 우리 메시지를 임시로 보관하는 저장소이다. 이 메세지들을 보관할 때 체계적으로 보관하기 위해 토픽 이름을 붙인다.Topic email.send 에서는 이메일 발송에 필요한 메시지만 저장하고, order.created에는 주문 생성하는데 필요한 메시지만 저장하는 것이다. 토픽은 카프카가 분리하는게 아니라, 프로듀서가 Kafka한테 전달하는 것이다. 브로커 = Kafka가 설치되어 실행중인 서버 1대클러스터 = 브로커 여러개 묶음프로듀서 -> 브로커 -> 컨슈머 CLI를 활용한 Kafka..
Kafka 설치하고 실행하기Kafka를 실행시키려면 jdk 17 버전이 필요하다. (공식문서) 1. jdk 17 설치$ sudo apt update # apt 패키지 목록 최신화$ sudo apt install openjdk-17-jdk$ java -version # 잘 설치됐는 지 확인apt 패키지 목록을 최신화 시켜주고, apt를 사용해서 openjdk-17-jdk를 설치해주었다.[Linux] 패키지 설치 명령어 apt 원리와 사용법jdk17이 잘 설치되었다. 2. kafka 설치파일 다운로드$ wget https://archive.apache.org/dist/kafka/4.0.0/kafka_2.13-4.0.0.tgzwget 방식은 실제로 인터넷에서 다운 받을 때처럼 URL 주소를 통해 다운 받는 방..
Kafka 설치 환경 세팅인스턴스 생성 버튼을 눌러 이름 작성 및 ubtuntu를 클릭하여 설정한다.인스턴스는 프리티어인 t3.micro를 선택해주었다.보안그룹에서 편집 버튼을 누른 후 이름과 설명을 작성해주었다.또한 보안 그룹 규칙 추가를 통해 모든 TCP에서 위치 무관이라는 옵션으로 모든 IP를 허용해 주었다.실제 운영 환경에서는 이 카프카의 접속이 필요한 서버에 대해서만 허용을 해야 한다.나머지는 다 그대로 둔 후 인스턴스 시작을 해주면 된다.id 클릭 후 연결해주면 된다.AWS EC2를 사용해서 컴퓨터를 한 대 빌렸고, 이 컴퓨터는 우분투라는 운영체제로 구성된 컴퓨터이다. 포스트 내용은 [실전에서 바로 써먹는 Kafka 입문] 강의를 기반으로 작성되었습니다.
카프카 (Kafka)대규모 데이터를 처리할 수 있는 메시지 큐이다. 메시지큐 (Message Queue)메시지 큐는 큐 형태에 데이터를 일시적으로 저장하는 임시 저장소를 뜻한다.메시지 큐를 활용하면 비동기적으로 데이터를 처리할 수 있어서 효율적이다.동기적 처리는 A 작업 끝나고 B 작업을 처리하는 거고, 비동기 처리는 A 작업시 시작하고 끝날 때까지 기다리는게 아니라 바로 B 작업을 시작한다. REST API 방식으로 통신 vs 메시지 큐를 활용한 통신REST API 방식은 요청을 보낸 뒤에 모든 작업이 다 처리될 때까지 기다렸다가 응답을 받는 식으로 통신을 한다.메시지큐를 활요한 통신 방식은 비동기적으로 작업을 처리하기 때문에, 모든 작업이 다 처리되는 것과 상관없이 응답을 받을 수 있다.사용자가 RE..
Github Actions 기본 문법github 문법에 맞게 디렉토리를 만들어주었다. (.github > workflows)GitHub Actions 설명서 - GitHub 문서스펠링 틀리면 안되고, 위치도 프로젝트 최상단에 있어야 한다.만든 폴더 밑에 .yml 파일을 만들면 되고, 이름은 상관없다.name: Github Actions 실행시켜보기on: push: branches: - mainjobs: My-Deploy-Job: runs-on: ubuntu-latest steps: - name: Hello World 찍기 run: echo "Hello World!" 작성하고 git 에 올려주면 된다. 참고로 yml은 들여쓰기가 중요하므로 신경써서 작성을 ..
배포 (Deployment)다른 사용자들이 인터넷을 통해서 사용할 수 있게 만드는 것 localhost 는 다른 컴퓨터에서 접근 불가능한 주소이다. 배포를 하게 되면 IP나 도메인과 같이 고유의 주소를 부여받게 되고, 다른 컴퓨터로 접속할 수 있게 된다. CI/CD테스트(Test), 통합(Merge), 배포(Deploy)의 과정을 자동화하는 것Continuous Integration (통합), Continuous Deployment (배포)를 뜻한다. 통합을 하기 위해서는 코드가 잘 작동하는지 테스트하는 과정이 필요해서, 테스트 과정을 포함시켜서 일반적으로 진행한다. 개발할 때, 코드 작성해서 commit 하고 브랜치에 Merge 하고 배포를 하는 방식으로 진행된다. 배포를 할 때 EC2 같은 컴퓨터 서..
1. 프론트엔드 배포하기 (HTML, CSS, JS)HTTP, CSS, JS 파일을 github 레파지토리에는 올려둔 상태라고 가정한다.https://github.com/JSCODE-COURSE/nginx-frontend-html$ cd /usr/share/nginx$ sudo git clone https://github.com/JSCODE-COURSE/nginx-frontend-html.git가져오면 /nginx-frontend-html 처럼 프로젝트 폴더가 하나 생긴다.이제 nginx 와 연결해주려면 설정파일 변경이 필요하다./etc/nginx/conf.d/default.conf에서,location / { root /usr/share/nginx/nginx-frontend-html; inde..
Nginx 디버깅 방법이전에 해봤던 sudo nginx -t로 설정 파일 문법 에러 체크가 가능했다. 하지만 경로 오탈자 같은 걸 잡아주진 못한다.location / { root /usr/share/nginx/hmtl; index hello.html;}이런 식으로 경로 오류가 났다고 하면, 404 not found 가 뜬다. nginx를 디버깅 하는 여러 방법들이 있다.nginx 가 정상적으로 뜨는지 확인sudo systemctl status nginxubuntu@ip-172-31-32-39:/etc/nginx/conf.d$ sudo systemctl status nginx ● nginx.service - nginx - high performance web server Loaded: loade..
Nginx 기본 문법설정파일 위치/etc/nginx/nginx.confnginx 에서 가장 근본이 되는 설정 파일 (루트 설정 파일)전역적으로 설정되어야 하는 내용 (워커 프로세스 개수, 로그 저장 위치 등)입문 단계에선 수정할 일이 많진 않다/etc/nginx/conf.d/default.conf기본 웹 서버 설정 파일여기 있는 설정 값을 때문에 Nginx 웹페이지를 다운받아서 볼 수 있는 것이다. (Welcome to nginx! 페이지) # server: 하나의 웹 사이트에 관련된 설정을 관리하는 단위로 server 블럭이라고 불린다server { # localhost:80 으로 들어오는 요청을 이 server 블럭에서 처리하도록 설정 # server_name이 일치하는 server 블럭이..
Web 서버란?네이버에 접속하기 위해서 주소창에 www.naver.com 이라는 주소를 입력할 때 어떻게 작동할까?주소창에 입력하면 네이버 웹 사이트로 직접 접속하는 게 아니라, 네이버 서버로부터 HTML, CSS, JS 파일을 다운받는 방식이다. 그리고 그 다운받은 파일의 코드를 브라우저가 해석해서 네이버 웹 사이트를 화면에 띄우는 것이다.개발자도구 > Network > Filter: All 하고 보면 다운로드 받은 파일들을 확인할 수 있다.다운로드 받아온 파일을 웹 브라우저가 해석해서 보여주는 것이다.네이버의 서버가 HTML, CSS, JS, 이미지와 같은 파일들을 사용자들이 다운받을 수 있게 제공하고 있다.웹 서버(Web Server)는 사용자의 요청(www.naver.com으로 접속하는 행위)이 ..