0. 이 글의 목적 테스트 환경에서 H2를 사용하다 보니 jsonb같은 dialect를 이해하지 못하는 상황이 발생함 Postgresql95Dialect로 dialect에 대해 설정하는 등 다양한 방법을 시도해 보았으나 실패하다 테스트 DB자체를 바꾸면 되는 거 아닌가 하는 생각으로 구글링과 함께 스타트 1. 동작 방식 요약 postgresql 도커 컨테이너를 내부적으로 띄워서 h2가 아닌 이 컨테이너와 통신하며 테스트를 진행하는 방식입니다. 초기 이미지 pulling으로 인해 시간이 조금 더 걸릴 수 있습니다. 2. gradle 설정 testImplementation("org.testcontainers:testcontainers:1.17.3") testImplementation("org.testcont..
0. 이 글을 작성하는 이유 회사에서 API Gateway에 Spring Cloud Netflix Zuul이 적용되어 있는데 이게 뭐 하는 놈인지 간단하게 알고 가기 위함(추후 더 자세히 작성되는 글이 올라올 수도..) 1. Spring Cloud와 Spring Cloud Zuul 우선 Spring Cloud는 MSA를 구축할 때 도움이 되는 여러 기능들을 제공한다. Spring Cloud의 프로젝트 안에 다양한 프로젝트들이 존재하는데 그중 Spring Cloud Netflix가 존재한다. Spring Cloud Netflix에는 Zuul이 포함되어 있다. 정확히는 Spring Cloud Zuul이 아닌 Netflix Zuul이고 이를 Spring Cloud에서 활용한 기술이 활용한 기술이 Spring ..
0. 이 글을 작성하는 이유 코틀린의 Class에서 상속을 받는 경우 ()를 붙이는 경우가 있고 안 붙이는 경우가 있다. 어떤 차이가 있는지 약간의 부연 설명을 더해서 정리하기 위해 1. Kotlin에서의 상속과 구현 Kotlin은 Java와는 다르게 extends나 implements키워드 없이 : 키워드 하나로 모든 것을 처리하고 있다. class Animal : AnimalInterface { } class Carnivore : Animal(),CarnivoreInterface { } 여기서 Java 사용자가 두 가지 부자연스럽게 느끼는 부분이 생겼다. 왜 갑자기 빨간 줄이 생겼으며 소괄호를 만들었는가 2. Kotlin의 Open키워드 Java에서는 기본적으로 클래스 생성 시 모든 접근 제어자가 d..
0. 이 글을 쓰는 이유 AMQP에 대해 잘 몰라서 RabbitMQ의 AMQP0-9-1 문서를 보며 개념을 알아가기 위함 https://www.rabbitmq.com/tutorials/amqp-concepts.html AMQP 0-9-1 Model Explained — RabbitMQ AMQP 0-9-1 Model Explained This guide provides an overview of the AMQP 0-9-1 protocol, one of the protocols supported by RabbitMQ. AMQP 0-9-1 (Advanced Message Queuing Protocol) is a messaging protocol that enables conforming client appli..
0. 이 글을 쓰는 이유 MSA에 대해 잘 몰라서 개념이라도 알아가기 위해 정리하기 위함 이 글은 모두 아래 영상들에서 나온 내용으로 영상을 보는 것을 추천합니다. https://www.youtube.com/watch?v=8d4h7K_Fq-0 https://youtu.be/UsdB03LgqAM?feature=shared 1. MSA란? Micro Service Architecture의 약자로 서비스를 비즈니스 경계에 맞게 세분화하고 서비스 간 통신은 네트워크 호출을 통해 진행하여 확장 가능하고 회복적이며 유연한 어플리케이션을 구성하는 아키텍처 2. 기존 Monolithic 방법론에 어떠한 문제점이 있길래? 여러 기능이 뭉쳐 Coupling과 Dependency가 강해 아래와 같은 문제점들이 발생한다. 소..
0. 이 글을 작성하는 이유 코틀린에서 TODO가 재미있어 보여서 간단하게 정리하기 위함 1. TODO? 기존 JAVA에 익숙한 사람이라면 //TODO “impl sort logic” 같이 뭔가를 해야하는 것들에 대해 주석을 달아본 경험이 있을 것이다. Kotlin에서는 TODO라는 객체가 존재한다. 둘 다 IDE(Intellij 기준) Project의 TODO로 검색이 되는 것은 동일하다. 그렇다면 객체에는 어떤 내용이 있을까 2. TODO 객체 TODO는 2가지로 오버로드 되어있는데 단순히 에러를 던지는 메서드와 내용을 담아 던지는 메서드 2개가 있다. 이렇게 되면 상당히 직관적으로 TODO를 사용할 수 있게 된다. TODO(”이거 구현해야함”)을 넣은 경우 아직 구현되지 않은 것에 대해 NotImp..
0. 이 글을 작성하는 이유 평화로운 추석기간, 브런치 설정 관련해서 메일 인증을 하던 도중 이 메일 인증이라는 건 어떤 방식으로 구현되는지 궁금해지기 시작했다. 1. 내가 받은 인증 메일URL은 어떻게 생겼나 이렇게 생겼다.(일부 글자를 지워 정상적으로 변환이 안되게 만들었다.) https://brunch.co.kr/signin/verify?token=JM1DT1ouT%2BTVY%fgujdQy23Sf%2BN0fRtQ%3D%3D 브런치스토리 작품이 되는 이야기 brunch.co.kr 뒤에 token이라는 단어가 보인다. 이 token이라는 단어에서 당장 생각나는 건 JWT가 생각난다. JWT의 경우 토큰 만료 시간, 토큰 수신자, 고유 식별자 등을 넣을 수 있어 이 경우 사용하기 적합하다고 생각한다. 사..
0. 이 글을 작성하는 이유 HTTPS에 대해 너무 모르는 것 같아서 이 참에 정리하고 넘어가기 위함 1. HTTPS란? HTTP에 S가 하나 더 붙었다. S는 Securer Sockets Layer의 약자라고 되어있는데 보안 Layer가 하나 더 추가되어 있다고 생각하면 편할 것 같다. Securer Sockets Layer의 앞 글자를 따서 SSL이라고 하는데 현재는 Transport Layer Securty, TLS가 사용 중이다. 우리는 HTTPS를 통해 인증과 데이터 무결성을 보장할 수 있다. 2. SSL과 TLS? HTTPS에 대해 이야기를 하다 보면 SSL과 TLS라는 단어가 자주 보인다. 무엇일까? SSL과 TLS 모두 서버, 애플리케이션, 사용자 및 시스템 간의 데이터를 암호화하는 통신 ..
0. 이 글의 작성 이유 최소한으로 JWT토큰을 발급하고 사용자에게 전달하는 과정을 설명하기 위함 다음에 Spring Security를 이용한 보안 처리를 진행할 예정이어서 미리 대비해 둔 코드가 존재할 수 있다. no used가 발생해도 당황하지 말자. 같이 보면 좋은 글 : https://developer-youn.tistory.com/166 JWT 0. 이 글을 작성하는 이유 JWT에 대해 정말 엄청 겉핥기로만 알고 있어서 이번에 프로젝트에 적용을 하기 위해 알아본 내용을 정리하기 위함 1. JWT란? Json Web Token의 약자이다. 이름에서 유추해 보 developer-youn.tistory.com 이전 글 https://developer-youn.tistory.com/165 맨땅에서 뭐라..
0. 이 글을 작성하는 이유 JWT에 대해 정말 엄청 겉핥기로만 알고 있어서 이번에 프로젝트에 적용을 하기 위해 알아본 내용을 정리하기 위함 1. JWT란? Json Web Token의 약자이다. 이름에서 유추해 보면 Json형태로 된 Web에서 사용하는 Token이다. 우리는 이 Token을 가지고 인증 / 인가에 대한 처리를 할 수 있다. 2. JWT 구성 JWT는 크게 헤더(JOSE Header), 페이로드(JWS Payload), 서명(JWS Signature) 3가지 파트로 구성된다. 2-1. 헤더(JOSE Header) JOSE라는 단어가 생소하게 느껴질 수 있다. JOSE는 Javascript Object Signing and Encryption의 약자로 간략하게 설명하면 claim(payl..