계기 회사에서 인증 서버로 Keycloak을 사용하고 있었다. 하지만, Keycloak이 회사의 인증 관련 요구사항을 감당하지 못해서 Keycloak의 Extension 중 하나인 PhaseTwo의 Keycloak-orgs를 사용하고 있었다. 그런데 그 Keycloak-orgs에서 조차도 원하던 모든 기능이 있었던 것이 아니다. 우리는 SSO를 지원해야하고, 고객이 로그인하는 순간 본인이 속한 조직 중에서 어떤 계정으로 로그인할 지 결정할 수 있어야했다. Keycloak이나 Keycloak-orgs에는 이런 기능이 존재하지 않았다. 그래서 그냥 내가 그 기능을 구현해버렸다. 바야흐로 Active Organization SPI SPI를 Keycloak에 붙여서 해당 기능이 잘 동작하는 것을 확인했고, 이 ..
개요 본 글에서는 Spring Boot와 Android Studio를 사용하여 서버에서 안드로이드 스마트폰으로 알림을 전송하는 간단한 웹 어플리케이션을 만들어 본다. 글을 쓰게 된 계기 서버를 만들다 보면 웹 뿐만 아니라 앱에 알림을 보내는 기능을 만들어보고 싶은 때가 있다. FCM은 Android와 IOS에 통합적으로 알림을 보낼 수 있는 서비스를 제공하므로 FCM을 이용하면 간편하게 알림을 보낼 수 있다. 문제는 Firebase는 입문하는 과정에서 정보를 얻기가 참 어렵다는 점이다. 공문서를 뒤져봐도 공문서 내용의 Android 버전이 예전 버전인 경우가 많아 바로 적용하기 어려운 부분이 있었다. 결국 알림을 원하는 대로 전송할 수 있었지만, 정보를 찾기 어려워서 상당한 시간을 소요한 것에 아쉬움이 ..
서론 지난 글에서 Kafka cloud에 연결하여 String으로 메시지를 주고 받았었다. 이번에는 Json으로 데이터를 주고 받는 코드를 구현할 것이다. 만약 Kakfa Cloud에 연결하기 위해 Configuration 설정하는 법이 알고 싶다면 지난 글을 참고하시길 바란다. https://bascat-code.tistory.com/21 Spring Boot로 Kafka cloud(Confluent, Conduktor 등)에 연결하여 데이터 주고 받기 (Configuration 방법 2가지) 서론 spring Boot를 사용하여 kafka에 연결하여 데이터를 주고 받으려고 Reference 자료들을 검색해보는데, 대부분의 자료들이 localhost:9092에 접속하여 로컬 컴퓨터에 있는 Kafka를 ..
서론 Local에서 개발할 때 Secret을 관리하려고 .env 파일을 사용하곤 한다. 해당 파일을 .gitignore에서 지정해두면 github의 공개 저장소에 올라가지 않기 때문이다. 하지만 개발을 완료한 서비스를 배포할 때는 .env 파일이 배포 서버에 존재하지 않기 때문에 해당 서비스가 정상적으로 작동하지 않는다. 물론 .env 파일을 함께 배포 서버(AWS EC2 등)에 업로드할 수도 있겠으나 그다지 좋은 방법은 아니다. 누군가가 EC2 인스턴스의 접근할 수 있게 되었다면 .env 내용이 탈취되어 보안 상의 문제가 발생하기 때문이다. 보안 상의 문제를 방지하기 위해 secret을 관리하는 방법에는 여러가지가 있다. 대표적으로 AWS Secrets manager를 사용하는 방법과 Docker Se..
서론 지난 편에서 Spring boot에서 Docker image를 만들고 Docker image를 Docker Hub에 등록하는 것까지 해봤다. 이번에는 등록한 이미지를 끌어와 ECS에서 구동하는 법을 실습해본다. 해당 실습은 AWS 계정이 있고 해당 계정이 IAM에서 VPC 접근 권한과 ECS 접근 권한이 허용되어있어야 한다. 주의사항 프리티어를 제공하는 EC2와는 다르게 ECS는 프리티어가 제공되지 않는다. 컴퓨팅 서비스를 띄우는 시간에 비례하여 요금이 청구되기 때문에 이에 유념하며 사용하자. 사용하지 않는 Task는 중지시켜 요금을 절약할 수 있다. ECS 구성 요소 ECS를 생성하여 컨테이너를 구동하기 전에 ECS가 어떻게 구성되어있는지 살펴본다. ECS는 다음과 같이 구성되어있다. 클러스터 컨..
서론 spring Boot를 사용하여 kafka에 연결하여 데이터를 주고 받으려고 Reference 자료들을 검색해보는데, 대부분의 자료들이 localhost:9092에 접속하여 로컬 컴퓨터에 있는 Kafka를 사용하는 예시를 보여주고 있었다. 현재 수많은 Kafka Cloud들이 존재하고 편리한 UI를 제공하여 데이터를 확인하기 좋게 편의성을 제공하고 있는데, Kafka Cloud에 연결하는 Spring 예문을 찾아보기 어려운 점은 상당히 아쉽게 느껴졌다. localhost에 접속할 때와는 Configuration 설정에서 조금 다른 부분이 있기 때문이다. 실제로 kafka를 직접 로컬 서버에 띄워서 사용하기보다는 cloud를 통해 데이터를 관리하는 경우가 많으므로, cloud에 연결하여 데이터를 주고..