Spring Cloud를 공부하며
·
개발 기록
Cloud Native, MSA, Spring Cloud를 공부하며 생각난 고민에 대한 글이다. 아직, 위에 말한 것들을 자세히 알진 못한다. 그러던 중 Spring Cloud Gateway에 대해 알아보며 사용자 인증처리에 대한 궁금증이 생겼다. JWT를 사용하여 인증/인가 작업을 한다고 하자. (애초에 MSA는 stateless이므로 Session은 사용이 어렵다.) 통상적으로 사용자가 로그인 시도를 하면 인증 서버는 Access/Refresh Token을 발급해줄 것이다. 그 후, 해당 토큰을 갖고 다양한 서비스에 접근을 시도할 것이다. 이때, 리소스 서버는 사용자 정보에 관해 어떻게 처리를 해야될지에 관한 고민들이 생겼다. 채팅 서비스를 예로 채팅 서비스 DB에서 유저와 관련해서는 userId만이..
Spring Pagination 연습
·
Spring/JPA
이번 포스팅에는 Spring Pagination에 대해 다뤄 볼 것이다. 구글, 네이버 카페, 커뮤니티 등 어떤 웹에서도 페이징 처리가 된 웹 형태를 자주 찾아볼 수 있다. 그렇다면 이렇게 페이징 처리하는 이유가 뭘까? 수많은 데이터가 DB에 존재한다고 했을 때, 페이징 처리를 하지 않고 모든 데이터들을 한 번에 뿌려준다면 해당 데이터들을 DB로부터 가져오는데 엄청난 시간이 소요될 것이다. 또한, 해당 데이터 자체를 들고 있어야 하기에 메모리에도 부담이 클 것이다. 하물며 사용자들이 그 수많은 데이터들을 다 보게 하는 것도 용이하지 못하다. 그래서, 모든 데이터들의 개수에 대한 기준을 만들어 해당 개수만큼 가져오는 페이징 형태를 사용하는 것이다. 페이징 처리를 적절히 활용하여 정렬 기준과 정렬 방식(오름..
Spring Cloud란?
·
Spring/Cloud
Spring Cloud 란? Spring Cloud 란 Microservices의 개발, 빌드, 배포, 운영에 필요한 아키텍처를 쉽게 구성할 수 있게 도와주는 Spring Boot 기반 프레임워크 이다. (Spring Cloud를 사용하려면 Spring Boot는 필수라고 한다) Spring Cloud를 이용하면 MSA를 위한 환경설정, 서비스 검색, 라우팅, 프록시 등 분산 시스템을 빠르게 설정이 가능하다. Spring Cloud를 이용한 어플리케이션 개발시 자주 사용되는 기술 환경 설정은 Spring Cloud Config Server를 통해 개발을 하며 이를 통해 다양한 Microservices에서 사용하는 설정 정보들을 Git에 집어 넣을 수 있다. -> Microservices가 변경돼도 빌드 ..
Cloud Native, 12 factors, MSA
·
Spring/Cloud
2010년대 이후부터 IT 시스템은 Antifragile 또는 Cloud Native Architecture 형태로 발전되어 왔다. Cloud Native Architecture의 특징 시스템의 수평적 확장에 유연하며 확장된 서버로 시스템의 부하 분산, 가용성이 보장 시스템 또는 서비스 어플리케이션 단위의 패키지(컨테이너 기반) 서버와 리소스들을 모니터링 도구를 이용해 확인 가능 서비스 생성-통합-배포, 비즈니스 환경 변화에 대응 시간 단축 분할된 서비스 구조, 무상태 통신 프로토콜 서비스의 추가와 삭제를 자동으로 감지 변경된 서비스 요청에 따라 사용자 요청 처리(동적 처리) 특정 서비스에 오류가 발생해도 다른 서비스에 영향을 주지 않음 (어떤 서비스를 수정한다 하면 전체 시스템 배포가 아니라 해당 서..
[프로그래머스] 리코쳇 로봇 - Java
·
PS/프로그래머스
BFS로 분 프로그래머스 문제이다. import java.util.*; // 최소 몇 번 이동인지 이므로 BFS // 장애물이나 벽을 만날 때 까지 이동이 1번의 이동 // x, y 좌표를 표기하기 위한 Node 클래스 필요 // BFS를 위해 사용할 Queue 필요 class Solution { static int[] dx = {-1, 1, 0, 0}; static int[] dy = {0, 0, -1, 1}; static int N; static int M; public int solution(String[] board) { int answer = 0; int start_x = -1, start_y = -1; N = board.length; M = board[0].length(); for(int i ..
[HTTP] OPTIONS 헤더, Preflight, CORS
·
CS/Network
OPTIONS는 RFC 7231에 명시된 HTTP의 여러 메서드 중 하나이다. 아래 표는 HTTP의 각 메서드에서 활용할 수 있는 내용이 정리되어 있다. OPTIONS는 실제로 우리가 프레임워크나 라이브러리를 사용한다면 직접 사용햘 일은 드물다. 하지만, 현대의 Front와 Back을 나눠 개발하는 흐름에서는 꼭 알아야할 개념이다. HTTP의 OPTIONS Method HTTP OPTIONS 메서드는 타겟 리소스 혹은 서버와 통신하기 위한 통신 옵션을 확인할 때 사용된다. 즉, 이 OPTIONS 메서드를 활용하면 해당 타겟 서버나 리소스가 지원하는 method, header, content type을 알 수 있다. 주로, 브라우저의 JS가 보내는 Fetch, Axios 요청의 Preflight에서 사용된..