본문 바로가기

Devops21

[Kafka] kafka에 대하여 알아보자 - 1 kafka에 대하여 알아보자 요즈음 여러 서버개발자 채용공고에 공통적으로 나타나는 기술중엔 kafka가 있습니다. 이전에는 kafka가 message queue라는 것만 알고, 이를 왜 사용하는지 이해하지 못했는데 시간이 난 김에 한번 공부해보려 합니다. kafka란? kafka란 데이터를 제공하는 sourceApplication과 데이터를 이용하는 targetApplication의 커플링을 약하게 하기 위해 나타났습니다. sourceApplication -> targetApplication의 형태로 이동하던 데이터를 sourceApplication -> kafka -> targetApplication의 형태로 중간에 kafka가 위치하게 됩니다. kafka는 json, tsv 등의 여러 포맷의 데이터를.. 2022. 8. 15.
[HTTP] HTTP 헤더 (1) HTTP 헤더 (1) HTTP 헤더의 용도 HTTP 전송에 필요한 모든 부가정보를 가지고 있다. 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트, 서버 정보, 캐시 관리 정보 등등.. 필요시에 임의의 헤더를 추가할 수 있다. HTTP BODY - RFC7230 메시지 본문(message body)을 통해 표현 데이터를 전달한다. 메시지 본문 = 페이로드(payload) 표현은 요청이나 응답에서 전달할 실제 데이터이다. 표현 헤더는 표현 데이터를 해석할 수 있는 정보 제공 데이터 유형(html, json), 데이터 길이, 압축 정보 등등 표현 Content-Type: 표현 데이터의 형식 표현 데이터의 형식을 설명한다. 미디어 타입, 문자 인코딩 text/html; charset=u.. 2022. 5. 9.
[HTTP] http status 상태코드의 종류 HTTP Status 상태코드의 종류 상태코드란? 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능이다. 종류 1xx(Informational): 요청이 수신되어 처리중 2xx(Successful): 요청 정상 처리 3xx(Redirection): 요청을 완료할려면 추가 행동이 필요 4xx(Cliendt Error): 클라이언트 오류, 잘못된 문법 등으로 서버가 요청을 수행할 수 없음 5xx(Server Error): 서버 오류, 서버가 정상 요청을 처리하지 못함 모르는 상태 코드가 나타난다면? 서버가 응답한 상태코드를 클라이언트에서 인식할 수 없다면? 클라이언트는 해당 상태코드의 상위 상태코드로 해석해서 처리한다. 234 ? -> 2xx (Successful)과 같이 모르는 상태코드더라도 2.. 2022. 5. 8.
[HTTP] HTTP 메서드의 종류 HTTP 메서드의 종류 HTTP 메서드는 같은 URI더라도 메서드를 구분하여 역할을 구분할 수 있다. RestFull한 API URI를 설계한다면? -> /members/{id}라는 URI 하나만으로 member중 id를 가진 사람이라는 대략적인 정보, HTTP 메서드로 행위를 정의할 수 있는 장점이 있다. HTTP 메서드 GET: 리소스 조회 POST: 요청 데이터 처리 PUT: 리소스 대체, 없다면 생성 PATCH: 리소스의 부분을 변경 DELETE: 리소스 삭제 HEAD: GET과 동일하지만 메시지 부분을 제외하고, 상태 줄과 헤더만 반환 OPTIONS: 대상 리소스에 대한 통신 가능 옵션(메서드)을 설명(주로 CORS에서 사용) CONNECT: 대상 자원으로 식별되는 서버에 대한 터널을 설정 TR.. 2022. 5. 7.
[HTTP] HTTP에 대하여 HTTP에 대하여 HTTP 메시지는 웹 통신 환경의 모든 것을 전송한다. HTML, TEXT와 같은 문자열 IMAGE, 음성, 영상, 파일과 같은 바이너리 데이터 JSON, XML과 같은 API 통신을 통해 전송하는 데이터 등 다양한 데이터 기반 프로토콜 TCP: HTTP/1.1, HTTP/2 현재는 HTTP/1.1을 주로 사용한다. UDP: HTTP/3 HTTP의 특징 클라이언트 서버 구조 HTTP는 Request(클라이언트)와 Response(서버) 구조로 이루어져있다. 클라이언트는 서버에 요청을 보내고, 응답을 대기하고 서버는 클라이언트의 요청에 대한 결과를 응답한다. 무상태 프로토콜(Stateless)과 비연결성(Connectionless) 무상태 프로토콜(Stateless) 서버가 클라이언트의 .. 2022. 5. 7.
[Raspberry Pi]라즈베리파이4 Ubuntu Server 시작하기 라즈베리파이4 Ubuntu Server 시작하기 AWS EC2 프리티어를 사용하여 개인 웹 서버를 구축하여 사용중에 벌써 1년이 지났다. 새로운 계정을 만들어 AWS를 이용하기에는 매번 서버 설정을 만져주어야 하기 때문에 번거롭고, 프리티어가 아닌 AWS를 통해 정기적으로 지출되는 비용이 부담되어 라즈베리파이를 사용해 개인 웹 서버를 구축하기로 결정했다. 준비 라즈베리파이4 4G 32GB micro SD card 외장 SSD 500GB 5V 3A type-c 충전기 micro HDMI to HDMI 케이블 OS 준비 라즈베리파이는 기본적으로 microSD카드를 스토리지로 사용한다. microSD카드로 서버를 이용하면 느린 속도에 불편함이 있다. 때문에 외장 SSD를 사용하기로 결정했다. 부트로더 업데이트.. 2022. 4. 19.
SpringBoot Jenkins 배포 자동화 2 SpringBoot Jenkins 배포 자동화 2 이전 시간에 Jenkins를 이용해 SpringBoot 프로젝트 배포를 구현했다. 여기에서 확인할 수 있다. 이번엔 원클릭 배포 시스템에서 github 원격 레포지토리에 push를 하면 github에서 자동으로 Jenkins Build를 시작하도록 설정해보자. 환경 SpringBoot, jar, gradle AWS EC2 Jenkins Docker Github Github Webhook 설정 Gihub Webhook은 사용자 지정 callback을 이용하여 일반 API와 다르게 역방향으로 요청을 보낸다. 배포할 프로젝트 레포지토리 webhook setting 진입 github 프로젝트 → Setting → Webhooks Add Webhook Payloa.. 2022. 4. 2.
SpringBoot Jenkins 배포 자동화 1 SpringBoot Jenkins 배포 자동화 1 Spring 프로젝트를 만들고, 배포를 하면서 기존 Build된 WAR 파일을 원격 서버에 전송하고, 원격 서버에서 직접 배포하는 과정이 불편하게 느껴졌다. 때문에 EC2환경에서 docker와 Jenkins를 사용하여 Github의 소스를 빌드하고, 배포하는 작업을 자동화 하려 한다. 환경 SpringBoot, jar, gradle AWS EC2 Jenkins Docker Github Jenkins 배포 과정 Jenkins를 이용한 배포 과정은 다음과 같다. SpringBoot 프로젝트 개발 Github에 push Jenkins에서 build build한 결과 jar파일을 web server에 SSH 송신 web server에서 jar파일 실행(배포) J.. 2022. 3. 23.
오라클 서버(리눅스)에 ssh키 추가 등록하기 오라클 서버(리눅스)에 ssh키 추가 등록하기 오라클 클라우드 VM을 구축할 때 사용한 ssh키 외에 다른 컴퓨터에서도 원격 접속해야할 때가 있다. 이 때에는 서버 컴퓨터에 접근 허용 ssh키를 등록해야한다. su root vi .ssh/authorized_keys root 계정으로 접속한 후 vi .ssh/authorized_keys 입력한다. 에디터가 열리면 접근을 원하는 컴퓨터의 public key 값을 넣어준다. 이후 :wq로 저장하면 새로 넣어준 컴퓨터로 원격 접근이 가능하게 된다. 2021. 5. 17.