전체 글 109

postman으로 token필요한 api에 자동으로 token 할당하기

현재 진행중인 사이드 프로젝트 [보틀노트]를 개발하면서 postman으로 api 로컬 테스트를 많이 하던 중 token 때문에 번거로웠다.왜냐면 로그인이 필요한 기능이 대부분인데다, 로그인이 필요한 api는 postman으로 호출하는 과정에서 Header의 Authorization 필드에 'Bearer + {accessToken}'의 형태의 토큰을 추가해야 했다.기존에는 아래와 같이 POST 로그인 API를 호출 한 뒤 응답 json의 accessToken 필드를 복사 한 뒤아래와 같이 복사한 accessToken을 요청하고자 하는 API의 Header에 첨부해야 한다.이 과정이 정말 복잡하기 그지없다.물론 인텔리제이 내부에서 http 요청을 보낼 수 있는 기능을 제공하기는 하지만, 나는 개발은 반드시 ..

카테고리 없음 2024.10.19

SSH .pem 파일로 접속하기

사이드 프로젝트에서 배치 서버를 따로 구동해야 하는데 내 개인 미니 PC에서 구동시키기로 했다. 팀원들이 원격으로 접속할 수 있도록 하기 위해서 구글링을 하던 중 host name과 password를 공유하는건 보안에 치명적이라 pem 키를 공유하는 방법을 선택하고 이를 기록한다.1. SSH 키 생성 (PEM 형식)클라이언트 측(접속을 시도하는 컴퓨터)에서 SSH 키를 생성해야 한다. 아래 명령어를 실행하여 SSH 키를 생성한다:ssh-keygen -t rsa -b 4096 키 생성 과정에서 파일을 저장할 경로를 묻는데, 기본 경로(~/.ssh/id_rsa)를 사용해도 되고, 별도의 경로를 지정할 수도 있다. 또한, 패스프레이즈를 설정하면 보안이 강화된다. SSH 키가 생성되면 두 개의 파일이 생성된다:..

카테고리 없음 2024.10.01

Kafka란 무엇인가? (기본 개념과 특징)

카프카(Kafka)란?카프카(Kafka)는 파이프라인, 스트리밍 분석, 데이터 통합 및 미션 크리티컬 애플리케이션을 위해 설계된 고성능 분산 이벤트 스트리밍 플랫폼이다.Pub-Sub 모델의 메시지 큐 형태로 동작하며 분산환경에 특화되어 있다.Kafka Broker Cluster란카프카 클라이언트와 데이터를 주고 받기 위해 사용하는 주체1개의 서버에 Broker 하나를 운용하지만, 안정성을 위해 3개 이상의 Broker를 운용하기도 한다.Producer : 데이터 생산, Consumer : 데이터 소비Broker : 프로듀서가 요청한 Topic의 파티션에 데이터 저장Consumer가 데이터를 요청하면 파티션에 저장된 데이터 전달Producer로부터 생산된 데이터는 메모리나 DB가 아닌 File System..

카테고리 없음 2024.08.09

자아 찾기 (나는 어떤 사람인가, 왜 개발자가 되었는가)

최근 면접 기회를 얻어 면접을 보게 되었다. 면접 이후, 나는 내가 어떤 사람인지 잘 모르고 있다고 느꼈다. 그래서 나라는 사람에 대해 정말 진지하게 고민해봤다.나는 어떤 사람인가첫 번째,로 나는 정말 잘하고 싶은 것에 엄청난 열정을 발휘하는 사람이다. 인정받고 싶은 욕구가 정말 강하다. 지금은 개발을 잘해서 인정받고 싶은 심리가 매우 크다. 이런 심리를 기반으로 몰입을 잘 한다. 취준생 시절 개발자 단톡방에서 다른 사람들이 모르는 내용을 질문 할 때, 모르는 용어를 다 적어놓고 무슨 뜻인지 다 공부했다. 유튜브로 개발 관련 유튜브만 본다. Okky, LinkedIn(개발 관련 커뮤니티)를 인스타그램보다 더 많이 접속한다. 1월에 입사한 이후 7개월동안 개발 관련 책을 10권이상 샀다. 열정 하나만큼은 ..

일기 2024.08.01

[BottleNote] Testcontainers를 이용한 통합테스트에서 인증이 필요한 API를 테스트하는 방법

테스트컨테이너가 무엇인지 알아보고,테스트컨테이너를 활용한 통합테스트에서 인증/인가가 필요한 상황에서 로그인처리를 어떻게 했는지 기록 Testcontainers란?Testcontainers는 도커를 사용해서 통합테스트를 구성할 수 있게 해주는 오픈소스 라이브러리이다.테스트 사이클이 도커의 사이클을 완전히 따라가는 것이 특징이며, 프로덕션에서 사용하는 것과 동일한 서비스에 의존하는 테스트를 작성할 수 있다. 보틀노트 프로젝트 역시 Docker를 사용해서 개발하고 있고, 배포방식도 ECR, ECS를 활용하기 때문에 통합테스트를 Testcontainers를 활용한 테스트를 진행했다. TestContainers 세팅@Testcontainers@ActiveProfiles("test")@Tag("integration..

보틀노트 2024.07.30

[Java] 입력 배열의 자료형에 따른 Arrays.sort()의 정렬 알고리즘 차이

알고리즘 문제를 풀 때, 정렬해야 하는 배열의 크기에 따라서 최선의 정렬을 하는 방법을 알아본다.그리고 Collections.sort와 Arrays.sort의 차이에 대해서 알아본다.1. 입력 배열의 자료형에 따른 Arrays.sort()의 정렬 알고리즘 차이1-1. Primitive TypeArrays.sort() 메서드는 여러 자료형의 배열을 매개변수로 전달할 수 있도록 오버로딩 되어 있다.아래와 같이 primitive 타입에 대해서는 DualPivotQuickSort를 사용하고 있다. (short, char 등 다른 primitive타입 모두 해당)  1-2. Object TypeObject 타입의 배열을 받는 경우에는 LegacyMergeSort와 ComparableTimSort를 사용하고 있..

자바 OOP 2024.07.23

[RabbitMQ] C#에서 RabbitMQ에서 데이터 가져오기(Consumer)

2024.07.15 - [분류 전체보기] - [RabbitMQ] C# 윈도우 서비스에서 RabbitMQ로 메시지 발행하기 [RabbitMQ] C# 윈도우 서비스에서 RabbitMQ로 메시지 발행하기회사에서 개발한 솔루션에서 '서버 모니터링'이라는 기능이 있다. 클라이언트 입장에서 서버의 상태를 확인하고 싶을 때, 서버 모니터링 기능을 이용해서 CPU사용량, 디스크 사용량 등 서버 자원iamdongmin.tistory.com 1편에서는 윈도우 서비스로 등록한 프로그램에서 RabbitMQ로 메시지를 발행(Publishing) 했고, 이제 Client 화면 단에서 메시지 큐에 있는 데이터를 읽어서 화면에 출력해야 한다. 간단하게 말하면 클라이언트 화면 단에서 메시지큐에 있는 값들을 읽어들여야 한다.Consum..

RabbitMQ 2024.07.18

[RabbitMQ] Exchange와 Queue 개념

RabbitMQ에는 아래 그림과 같이 Exchange와 Queue라는 개념이 있다.해당 개념을 정확히 알아야, 메시지 큐의 장점을 정확히 알고 사용할 수 있기 때문에 개념을 기록하고자 포스팅한다. Exchange (교환기)Exchange는 메시지를 수신하고 특정 규칙에 따라 큐로 메시지를 라우팅하는 역할을 한다. Exchange는 다음과 같은 주요 타입이 있다:1. Direct Exchange- 메시지가 routing key에 따라 특정 큐로 라우팅된다.- 각 큐는 특정 routing key와 바인딩된다.- 예를 들어, routing key가 error인 메시지는 error 큐로 라우팅된다.2. Fanout Exchange- 모든 수신된 메시지를 바인딩된 모든 큐에 전달한다.- routing key는 무..

RabbitMQ 2024.07.18

[RabbitMQ] C# 윈도우 서비스에서 RabbitMQ로 메시지 발행하기(Producer)

회사에서 개발한 솔루션에서 '서버 모니터링'이라는 기능이 있다. 클라이언트 입장에서 서버의 상태를 확인하고 싶을 때, 서버 모니터링 기능을 이용해서 CPU사용량, 디스크 사용량 등 서버 자원의 상태를 그래프로 확인할 수 있는 기능이다. 이 기능이 C# 으로 개발 된 윈도우 서비스에서 서버 PC의 상태를 파싱하고 DB에 값을 밀어넣으면, 클라이언트가 호출한 서버 모니터링 API는 윈도우 서비스가 밀어넣은 DB의 값을 화면에 출력하는 형태이다. 이 방식은 DB I/O가 너무 크고, 윈도우 서비스에서 DB에 직접 접근하기 때문에 비효율적인 방식이라 메세지 큐를 사용하여 개선하게 되었다. 기존 DB에서 조회하던 방식메시지 큐 사용윈도우 서비스로 등록한 데몬이 직접 DB에 접근하지 않게 한다.c# 윈도우 서비스의..

RabbitMQ 2024.07.15

N100 mini pc로 우분투 서버 구축하기 (외부 네트워크에서 ssh 접속)

알리 익스프레스에서 미니 PC를 서버용으로 구입했다. 내장된 Windows OS를 지우고, Ununtu 22.04LTS를 설치했다.항시 전원을 켜두고, 외부에서 접속할 수 있도록 하기 위해서 ssh 설정을 하는 방법을 기록한다. 윈도우를 지우고 우분투를 설정하는 방법은 이 유튜브에 아주 상세히 나와 있다.https://www.youtube.com/watch?v=pUF2WKcjy4g 1. 포트포워딩을 진행한다. 외부포트 234번으로 접속하면 내부 포트 22번으로 접속이 되도록 설정했다.내부 포트는 Well-Known포트로 22번이 ssh에 할당되어 있다. 2. DCHP 서버가 생성해준 유동 IP ->고정IP 할당접속 단말 정보에서 확인할 수 있는 우분투 서버의 IP를 아래 사진과 같이 고정 IP로 등록한다..

DevOps 2024.07.01