본문 바로가기

백엔드4

Spring GCP Credentials 파일 여러개 적용하는 방법 Spring에서는 GCP를 사용하고자 할때 credentials.json 파일을 property로 입력하여 사용합니다. 하지만 여러개의 credentials 파일을 사용하여 GCP를 사용하는게 불가능한데요. (음 제가 그냥 모르고 있는 건지도...) 오늘은 여러개의 GCP Credentials 파일을 적용하는 방법에 대하여 알아보겠습니다. 사실 여러개의 권한을 가지는 credential 계정을 발급받으면 되지만,,, 그냥 한번 들여다 봤습니다. GCP 예제는 사용하시는 분이 많으신지는 모르겠지만, 제가 사용하던 BigQuery를 기준으로 설명하겠습니다. 1. GCP의 기본 설정 및 BigQuery 예제 기본적으로 GCP credentials 는 위의 코드처럼 설정합니다. package com.exampl.. 2022. 3. 7.
전략 패턴(Strategy Pattern) 우아콘2020에서 프론트 서버의 구조를 보던중에 문득 DIP(의존성 역전 원칙)와 관련있는 전략 패턴이 등장하여 다시한번 기억하고자 이 글을 작성합니다. 흔히 우리가 많은 곳에서 쓰고 있지만 디자인 패턴 측면(좀더 이론적인??)에서 접근해보고자 합니다. 추가로 Spring boot 예제도 구현해보겠습니다. 전략 패턴 어느 한 객체가 특정 컴포넌트에 의존하게 되면 후에 해당 객체에 기능이 추가되고 변하게 되었을 때 유연한 대처(소스코드 변경 및 컴포넌트 변경 대처 등)를 하기가 어렵습니다. 다음은 특정 컴포넌트 A에 의존적인 객체(Context)를 나타냅니다. 이러한 문제를 해결하기 위해 다음과 같이 특정 컴포넌트들의 의존성을 역전시킨 전략패턴을 사용할 수 있습니다. 위 그림과 같이 전략 패턴은 추상화 계.. 2021. 6. 24.
Kafka(이벤트 브로커) vs RabbitMQ(메시지 브로커) 개요 kafka와 rabbitmq 모두 pub/sub 기반의 메시지 큐 서비스를 제공합니다. 기존에는 rabbitmq보다 kafka에서 더 많은 기능 지원을 한다 정도만 알고 있었는데요. 이벤트 기반 MSA를 공부하면서 kafka와 rabbitmq에 대해서 조금은 더 자세히 알게되어 그 차이점에 대해서 간략하게 기록합니다. 메시지 브로커 메시지 브로커는 publisher가 생산한 메시지를 메시지 큐에 저장하고, 저장된 데이터를 consumer가 가져갈 수 있도록 중간 다리 역할을 해주는 브로커(broker)라고 볼 수 있습니다. 보통 서로 다른 시스템(혹은 소프트웨어) 사이에서 데이터를 비동기 형태로 처리하기 위해 사용합니다. 이러한 구조를 보통 pub/sub 구조라고 하며 대표적으로 RabbitMQ 소.. 2021. 6. 24.
MySQL의 Prepare Statement 개요 JDBC에서 사용하는 PreparedStatement를 통해 쿼리를 실행할 때 해당 쿼리를 분석한 분석 정보를 저장해 매번 실행할 때마다 쿼리 분석 시간을 Skip하여 쿼리 실행 시간을 줄여준다고 알고 있었지만 MySQL의 경우에는 조금 다른 부분이 있어 기억하고자 이 글을 작성한다. 1. MySQL Prepare Statement의 종류 1.1 Client Prepare Statement SQL 문장에서바인딩 변수(SQL에서 '?'를 사용해 표현)에 값을 맵핑하여 하나의 완성된 SQL 문장을 MySQL 서버에 전송한다. 즉, 실제로는 MySQL 서버에선 일반 statement로 받아들이며 prepare statement이지만 매번 쿼리 문장을 분석하고 실행 계획을 수립해서 쿼리를 실행한다. 1.2.. 2021. 6. 24.