Backend
이번 포스팅에서는 MSA 아키텍처 구조에서의 인가(Authorization)에 대해서 다루어 보려고 한다. 아래의 내용은 일반적인 JWT 기반의 인증과 인가 플로우이다. 그렇다면, 여러개의 서버가 존재하는 MSA 구조에서는 해당 과정의 처리를 어떻게 해야 할지 알아보도록 하자. 클라이언트 서버 인증 1 로그인 요청 2 데이터베이스에서 ID와 비밀번호 대조 후 일치여부 확인 3 일치 시 암호화된 토큰 생성 4 응답으로 토큰을 반환 5 클라이언트는 토큰을 저장 인가 1 API 요청 시 헤 토큰을 포함시켜 요청 2 토큰을 복호화하여 유효성 검증 3 검증 완료되었다면 API 로직 처리 후 응답 4 응답을 받음 프로젝트 구조 User-Service에서의 인증(Authorization) 일반적으로 Applicati..
이전 포스팅에서 MSA 아키텍쳐의 구조와 Spring Cloud에 대한 소개를 하였었다.이번 포스팅에서는 이전에 소개했던 아키텍쳐의 구성 요소들인 Gateway, Naming Server, MSA Service들을 만들어보고 연동하는 작업을 해보려고 한다. https://sjh9708.tistory.com/119 [Spring Cloud] Microservice(MSA) 구축 : (1) MSA의 이해와 Spring Cloud의 구조마이크로서비스 아키텍처 (Microservices Architecture, MSA) 비즈니스 로직을 분리하여 개발하고, 분리된 서비스가 다른 서비스에 영향을 최소화하여 개발하는 방법론. 작은 서비스들이 모여 단일 어플sjh9708.tistory.com Spring Cloud..
마이크로서비스 아키텍처 (Microservices Architecture, MSA) 비즈니스 로직을 분리하여 개발하고, 분리된 서비스가 다른 서비스에 영향을 최소화하여 개발하는 방법론. 작은 서비스들이 모여 단일 어플리케이션을 이룬다. 소프트웨어를 작은, 독립적인 서비스 단위로 나누는 방식으로 설계된다. 이러한 독립적인 마이크로서비스는 각각 자체 실행 가능하며, 특정 기능 또는 업무를 처리한다. 다른 마이크로서비스와 통신하여 전체 시스템을 구성하게 된다. 1. 낮은 서비스 간의 결합도 각 서비스는 독립적으로 개발, 배포, 확장될 수 있다. 최소한의 중앙집중식 시스템을 유지하며, 분산 시스템을 구축한다. 2. 독립된 기술 스택과 데이터 스토리지 독립적으로 어떤 기능에 충실하여 개발하게 되므로, 굳이 같은 ..
Mac M1에서 Dockerfile을 빌드하여, Dockerhub에 배포한 후, AWS의 Ubuntu에 해당 이미지를 다운로드 받은 후, Docker-compose를 통해 배포하려고 시도하였다.. 해당 과정에서, Dockerfile의 이미지를 내려받는 중 JDK 플랫폼 불일치 에러 "exec format error"가 발생하였다. "exec /usr/local/openjdk-11/bin/java: exec format error 구글링을 통해 나온 해당 문제점은 아래와 같았다. Mac M1에서 Docker를 빌드한 이미지는 ARM64 아키텍처를 사용하므로, Ubuntu 서버에서 실행하려면 AMD64 아키텍처에 호환되는 이미지를 빌드해야 한다. 즉, Mac OS의 M1에서 발생하는 고질적인 문제가 원인이었..
쿠버네티스란? 쿠버네티스(Kubernetes)는 컨테이너 오케스트레이션 플랫폼의 하나로, 분산 시스템을 관리하고 배포하는 데 사용된다. 쿠버네티스는 컨테이너화된 애플리케이션을 자동화된 방식으로 관리하고 확장할 수 있도록 도와준다. 쉽게 말해서 컨테이너 기술을 제공해 주는 것의 예시가 도커라면, 쿠버네티스는 컨테이너들의 집합을 관리해주는 플랫폼이다. 예를 들어 생각해보면, 우리가 웹 서버를 여러대의 서버 인스턴스(컴퓨터)들에서 도커 컨테이너로 운영하고 있다고 생각해보자. 만약 쿠버네티스를 사용하지 않는다면, 우리는 배포할 때에, 일일이 서버 인스턴스에 접속해서 도커 명령어를 통해 업데이트를 진행해야 하는 번거로움이 있을 것이다. 쿠버네티스는 이런 일련의 과정을 자동화해주며, 도커 호스트 관리, 컨테이너 배..
이번 포스팅에서는 Spring Boot에서 Request로 Multipart 형식의 File을 받아, 서버 내부 스토리지에 저장하는 방법과, 스토리지에 저장된 파일을 Response로 출력하는 과정을 다루어보도록 하겠다. 업로드 파일 저장 디렉터리 생성 ▶ Application.java @SpringBootApplication public class WisefeeApplication { @Value("${upload.directory}") private String uploadDirectory; public static void main(String[] args) { SpringApplication.run(WisefeeApplication.class, args); } @PostConstruct publi..
이전 포스팅에서 Spring Boot에서 JWT를 이용한 로그인 인증과 인가를 구현하였다. 프로젝트 진행에 따라서 유저가 로그인 했을 때의 모바일 기기의 Firebase Token을 저장하여(휴대폰 기기를 식별해주는 토큰이라고 생각하면 됨), Notification Server를 통하여 해당 기기에 푸시 알림 요청을 날려야 하는 로직을 개발할 필요가 생겼다. 따라서 로그인 시 발급된 JWT와 함께 Firebase Token을 저장해야 한다고 생각했다. 유저가 어떤 다른 API 요청을 했을 때, Firebase 푸시알림을 보내야 한다면, Redis에서 Token을 꺼내어 푸시알림을 보낼 수 있도록 인증정보(JWT)와 FCM Token를 Redis를 저장하는 과정을 작성해보려고 한다. 이번 포스팅에서는 Sp..
이전 포스팅에서 Spring Boot에서 JWT를 이용한 로그인 인증을 구현하였다. 이번에는 로그인한 사용자에 한해서 API 사용을 승인하는 API 인가(Authorization), 더불어 권한별로 인가를 구현하는 방법을 알아보도록 하겠다. JWT 토큰 인증 방식에 대해서는 아래의 포스팅을 참고하면 좋을 것 같다. https://sjh9708.tistory.com/46 [Web] 인증과 인가 - JWT 토큰 인증 앞 포스팅에서 세션 방식의 인증과, 성능 개선을 위한 방법들에 대해서 다루어 보았었는데 이번에는 언급했던 토큰 인증 방식에 대해서 알아보려고 한다. 토큰 인증 세션 인증 방식과 달리 인증 sjh9708.tistory.com Spring Security JWT 인증과 인가 - (1) 회원 가입 h..
이번 포스팅에서는 Spring Boot에서 JWT를 이용한 로그인 인증을 구현해보도록 하겠다. JWT 토큰 인증 방식에 대해서는 아래의 포스팅을 참고하면 좋을 것 같다. https://sjh9708.tistory.com/46 [Web] 인증과 인가 - JWT 토큰 인증 앞 포스팅에서 세션 방식의 인증과, 성능 개선을 위한 방법들에 대해서 다루어 보았었는데 이번에는 언급했던 토큰 인증 방식에 대해서 알아보려고 한다. 토큰 인증 세션 인증 방식과 달리 인증 sjh9708.tistory.com Spring Security JWT 인증과 인가 - (1) 회원 가입 https://sjh9708.tistory.com/83 [SpringBoot] Spring Security JWT 인증과 인가 - (1) 회원 가입 ..