정기간행물 39

우리 팀의 코드 품질 향상을 위한 Code Review - 홍승환

코드 리뷰의 도입이 힘든 이유 그럴 시간 없다 좋은게 좋은거지 비난이나 공격 코드 리뷰 왜 해야지? 제품 품질 - 잠재 오류를 사전에 발견 Bus Factor 최소화 - context sharing을 통한 엔지니어 가담 가능성 상승 업무 효율화 - 서로 다른 코딩 컨벤션부터 전반적인 설계 원칙까지 점직적으로 싱크 두 가지 방향에서의 노력 (받는 사람, 하는 사람의 노력) 받는 사람 Git을 똑바로 사용하자. 팀 내 Branch 관리 전략 준수 Commit Convention 지정하기 Conventional Commits 리뷰 받을 준비가 된 PR을 만들자. CI 파이프라인이 통과됐는가? Formatter, Type checker, unit test 리뷰 가능한 크기인가? 적절한 리뷰어 설정했는가? 개인별..

Public Key Retrieval is not allowed 오류

Mysql 8.0 버전이고 해당 오류가 발생한다면 다음과 같은 옵션을 확인해야한다. useSSL : DB에 SSL로 연결 allowPublicKeyRetrieval : 서버에서 RSA 공개키를 검색하거나 가져와야하는지 useSS=false라고 작성한다면 allowPublicKeyRetrival=true 해줘야한다. 해당 사이트에 따르면 ssl mode는 default 값이 “Use SSL if the server supports it”이다. ALLOW Public Key Retrieval은 default 값으로 false가 되어있다. 공식 문서 If the user account uses sha256_password authentication, the password must be protected du..

AWS 서비스

1. EC2 (Amazon Elastic Compute Cloud) - 가상 서버 인스턴스 생성 및 관리 - 웹 어플리케이션, 데이터베이스 2. S3 (Simple Storage Service) - 객체 스토리지 서비스 - 데이터 무결성 검사, 데이터 암호화, 접근 제어 및 인증 등의 보안 기능 제공 - 데이터 백업, 복원 및 저장소 분석 기능 제공 - 웹 사이트 호스팅, 백업 및 복원 3. RDS (Relational Database Service) - 관리형 관계형 데이터베이스 서비스 - Mysql, PostgreSQL - 그냥 EC2에 그냥 구현하자. 4. Lambda - 서버리스 컴퓨팅 서비스 - 어플리케이션 빌드 및 배포, 백그라운드 작업 5. DynamoDB - 관리형 NoSQL 데이터베이스 ..

Spring boot에 JKS파일 정보만 입력했는데 어떻게 암호화, 복호화가 둘 다 될까?

비대칭키 암호화 방식에서는 공개키는 데이터를 암호화할 때 사용되며, 개인키는 암호화된 데이터를 복호화할 때 사용된다. 그런데 Spring boot yml파일에 JKS파일 정보만 입력했는데 /encrypt api를 통해 암호화된 값을 얻어올 수 있다. 어떻게 가능한 것인가? JKS 파일은 공개키와 개인키를 함께 저장하는 파일이다. 보통 공개키와 개인키가 쌍으로 저장되어 있으며, 이 쌍은 같은 alias로 식별된다. 스프링 부트에서는 key-store와 key-alias 설정을 통해 JKS 파일의 위치와 인증서/개인키 쌍의 alias를 설정할 수 있다. keytool -list -v -keystore -storepass 실행 결과에서 'Entry type: PrivateKeyEntry' 라는 문구가 있으면,..

curl이란?

1. curl이란? - 웹 서버와 통신하는 방법이 필요했고 curl이 개발됐다. - curl은 cli를 통해 데이터를 전송하고 받는 도구입니다. url을 통해 서버에 요청을 보내고, 응답을 받아오는 기능을 수행한다. - 다양한 프로토콜을 지원하며, HTTPS, FTP, SMTP 등 다양한 프로토콜을 이용하여 데이터를 전송할 수 있다. 2. curl 기본 사용법 curl [옵션] [URL] '-X'은 HTTP 메소드를 설정 '-H'는 HTTP 헤더를 설정 '-d'는 리퀘스트 바디를 설정 '-o'는 응답 결과를 파일로 저장 '-F'는 파일 업로드 '-u'는 인증 정보 설정 '-b', '-c'는 쿠키 설정 3. curl을 이용한 기능 - curl을 이용하여 파일 업로드, 다운로드, SSL 인증서 검증, 쿠키 ..

RabbitMQ란?

1. RabbitMQ란 무엇인가? RabbitMQ는 AMQP(Advanced Message Queuing Protocol) 메시지 브로커 소프트웨어이다. 메시지 브로커는 분산 시스템에서 서로 다른 애플리케이션 간의 통신을 가능하게 해주는 중간자 역할을 한다. 메시지 큐 기반으로 동작하며, 비동기 메시지 전송, 작업 큐, 로깅, 분산 시스템 등 다양한 용도로 사용할 수 있다. 2. RabbitMQ의 구조와 구성 요소 RabbitMQ 메시지 브로커의 아키텍처는 크게 Producer, Exchange, Queue, Consumer로 구성된다. Producer는 메시지를 생성하고 Exchange로 전송한다. Exchange는 Producer가 생성한 메시지를 받아서 적절한 Queue로 라우팅한다. 4가지 유형의..

Docker Architecture

Docker는 클라이언트-서버 아키텍처를 사용한다. Docker 클라이언트와 데몬은 UNIX 소켓 또는 네트워크 인터페이스를 통해 REST API를 사용하여 통신한다. UNIX 소켓 Unix 소켓(Unix domain socket)은 Unix 계열 운영 체제에서 프로세스간 통신(IPC, Inter-Process Communication)을 위해 사용되는 방법 중 하나이다. TCP/IP 소켓과 유사한 방식으로 작동하지만 TCP/IP 소켓과 달리 네트워크를 통하지 않고 로컬 시스템에서만 통신할 수 있다. Unix 소켓은 일반적으로 파일 시스템에서 파일처럼 다루어지며, 파일 시스템 경로를 통해 접근 가능하다.

DockerNetwork

1. 컨테이너가 통신하는 방법 docker0 virtual ethernet bridge : 172.17.0.0/16 L2 통신기반 container 생성 시 해당 컨테이너에 veth 인터페이스 생성 모든 컨테이너는 외부 통신을 docker0 통해 진행 container running 시 172.17.X.Y 로 IP 주소 할당 2. 컨테이너 포트를 외부로 노출하는 방법 port-forwarding container port를 외부로 노출시켜 외부 연결 허용 iptables rule을 통한 포트 노출 -p hostPort:containerPort -p containerPort -P 3. 컨테이너 네트워크 추가하는 방법 user-defined bridge network 생성 $ docker network cr..

프로메테우스란?

1. 프로메테우스란? 프로메테우스는 오픈소스 기반의 시계열 데이터 수집, 저장, 분석, 시각화, 알림 기능 등을 제공하는 모니터링 시스템이다. 강력한 시계열 데이터 처리 엔진을 가지고 있어, 대규모 분산 시스템에서 수억 건 이상의 메트릭 데이터를 처리할 수 있다. 메트릭(metric)은 모니터링 대상 시스템에서 수집되는 측정 가능한 데이터를 의미한다. (서버의 CPU 사용률, 메모리 사용률, 디스크 I/O 속도, 네트워크 전송량 등) 메트릭은 일정한 시간 간격으로 수집되며 시계열 데이터로 수집되는 데이터는 매우 많은 양이 된다. 이를 쉽게 분석하고 시각화하기 위해서는 모니터링 도구가 필요하다. 프로메테우스는 다양한 데이터 소스로부터 메트릭 데이터를 수집하고, 이를 쿼리하여 시각화 및 분석하는 기능을 제..