[DevOps] Nginx 삽질 일기..🥲
·
DevOps/Nginx
Nginx 리버스 프록시를 활용해 카카오 소셜 로그인을 구현하는 과정에서 여러 오류가 발생했는데요..어떤 오류들이 있었는지 공유해 보려고 합니다! Nginx 학습하면서 블로그를 작성했는데 해당 링크를 첨부해보도록 하겠습니다 :) https://young-code.tistory.com/1 [Nginx] Nginx 야무지게 정리하기1. Nginx란?Nginx는 오픈소스 소프트웨어 웹서버로 시작되었습니다. 지금은 웹서버의 역할뿐만 아니라 프록시 서버, 캐싱, 분산 처리, 미디어 스트리밍 등을 위한 다양한 기능을 제공합니다. 기능뿐young-code.tistory.com  🚩Nginx 이슈1. 문제 상황 💡카카오 소셜 로그인 플로우1. 클라이언트가 카카오 로그인 버튼 클릭2. 클라이언트는 카카오 인증 서버로..
[DevOps] Infra Architecture
·
DevOps/CI CD
HowAbout 프로젝트에서 DevOps를 담당하며, 인프라 아키텍처를 설계하고 구현한 결과를 기록하고자 합니다.💡참고Howabout 프로젝트는 단순한 기능 구현뿐만이 아닌 애플리케이션의 사용자가 증가함에 따라 발생할 수 있는 트래픽 문제를 고려하여 진행했습니다.☁️ Infra Architecture 1. Jenkins Master-Agent 구조 Jenkins를 Master-Agent 구조로 구현했습니다. 초기에는 단일 서버에서 빌드, 테스트, 배포 작업을 모두 처리했지만, 이로 인해 성능 병목이 발생하고 배포 시간이 길어지는 문제가 있었습니다. 이를 개선하기 위해 Master 서버는 작업 스케줄링에 집중하도록 하고, Agent 서버에서 빌드와 테스트를 병렬로 처리하도록 구조를 분리했습니다. 특히, ..
[Spring] Security + JWT + OAuth2를 이용한 로그인 구현 (4) - OAuth란?
·
Programming/Spring
1. OAuth2.0a. OAuth2.0이란 'OAuth*(Open Authorization)*'는 인터넷 사용자들이 비밀번호를 제공하지 않고, 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로써 사용되는 접근 위임을 위한 개방형 표준을 의미합니다. 사용자의 아이디와 비밀번호 없이 접근 권한을 위임받을 수 있다는 것은, 로그인 및 개인정보 관리 책임을 'Third-Party Application(google, kakao, naver 등)'에 위임할 수 있다는 것으로, 로그인 및 개인정보 관리에 대한 책임을 위임하는 것뿐만 아니라, 부여받은 접근 권한을 통해 서드파티 프로바이더가 가지고 있는 사용자의 리소스 조회 등의 기능을 수행할 수 있습니다..
[Spring] Security + JWT + OAuth2를 이용한 로그인 구현 (3) - Spring Security 개념과 처리 과정
·
Programming/Spring
1. Spring Security 개념스프링 기반의 애플리케이션의 보안(인증과 권한)을 담당하는 프레임워크입니다.스프링 시큐리티는 필터(Filter) 기반으로 동작하기 때문에 스프링 MVC와 분리되어 관리 및 동작합니다. 필터(Filter)는 Dispatcher Servlet으로 가기 전에 적용되므로 가장 먼저 URL 요청을 받지만, Interceptor는 Dispatcher와 Controller 사이에 위치합니다. 그래서 이 둘은 적용 시기에 차이점이 있습니다.  Client (requset) -> Filter -> DispatcherServlet -> Interceptor -> Controller 순입니다. 뒤에 설명에서 계속 나올 용어에 대해 먼저 정리해보려 합니다. 💡용어1. 접근 주체(Prin..
[백준] 13549 : 숨바꼭질 3 (JAVA)
·
Algorithm
https://www.acmicpc.net/problem/13549 🚩최단 경로최단 경로 문제였고, 각 동작에 따른 가중치가 다르기 때문에(+1과 -1은 가중치가 1이고, *2는 가중치가 0) 다익스트라 알고리즘으로 접근하였습니다. 또한, 가중치가 낮은 순서대로 실행하기 위해 Queue 대신 우선순위 큐를 사용했습니다. 아래는 우선순위 큐로 제출한 코드입니다.import java.io.*;import java.util.*;class Node { int num; int depth; public Node(int num, int depth) { this.num = num; this.depth = depth; }}class Main { static int K..
[Spring] Security + JWT + OAuth2를 이용한 로그인 구현 (2) - JWT 관련 클래스 생성 / JWT 인증 로직
·
Programming/Spring
이전에 JWT 정의를 살펴봤다면, 이번에는 JWT 관련 클래스를 직접 생성하여 구현해보려고 합니다. 0. 들어가기 전JWT 패키지 구조는 다음과 같습니다. JWT 서비스를 생성하기 위해, build.gradle에 아래와 같은 의존성을 추가했습니다!implementation 'io.jsonwebtoken:jjwt-api:0.11.5'runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.5'runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.11.5' 또한, 설정 파일에 JWT 코드를 추가해 주도록 하겠습니다.jwt: secret: access: "base64로 인코딩된 암호 키, HS256를 사용할 것이기 때문에, 256비트(32바이트) 이상이 되..
[Spring] Security + JWT + OAuth2를 이용한 로그인 구현 (1) - JWT란?
·
Programming/Spring
1. JWT(JSON Web Token)란?JWT는 인증에 필요한 정보들을 암호화시킨 JSON 토큰을 의미합니다. 따라서 JWT를 이용한 인증은 유저를 인증하고 식별하기 위한 Token 기반 인증입니다. JWT는 JSON 데이터를 Base64 URL-safe Encode를 통해 인코딩하여 직렬화한 것이고, 토큰 내부에는 개인키를 통한 전자 서명이 들어있습니다.🤔 Base64 URL-safe Encode?Base64 URL-safe Encode란, 일반적인 Base64 Encode를 URL에서 오류 없이 사용하도록 '+'와 '/'를 각각 '-', '_'으로 표현한 것입니다. 토큰 기반 인증에서 토큰은 토큰 자체에 사용자의 정보들이 포함되어 있다는 점이 특징입니다.클라이언트의 상태를 알아야했던 Statef..
[DevOps] Nginx 야무지게 정리하기
·
DevOps/Nginx
1. Nginx란?Nginx는 오픈소스 소프트웨어 웹서버로 시작되었습니다. 지금은 웹서버의 역할뿐만 아니라 프록시 서버, 캐싱, 분산 처리, 미디어 스트리밍 등을 위한 다양한 기능을 제공합니다.기능뿐만 아니라 성능면에서 기존의 웹서버들보다 뛰어나 현재 Nginx는 가장 널리 사용되고 있는 웹 서버입니다.Nginx가 등장하기 전 웹서버의 대표 주자였던 Apach보다 어떤 점이 좋아서 현재 가장 많이 사용되는 웹서버로 자리 잡았는지 동작원리를 비교해 봅시다.  2. Nginx / Apacha. Apach 동작 원리 Apach 이전에 웹서버로 사용되던 NCSA HTTPd가 있었습니다. 하지만 버그가 많이 발생해서 사용하는데 불편한 점이 많았고 이러한 문제점을 해결하기 위해 나온 웹서버가 Apach입니다. 지금..