- [AWS] S3 개념과 버킷-권한 설정 방법2024-08-05 21:46:54S3 (Simple Storage Service) 개념AWS S3는 업계 최고의 확장성과 데이터 가용성 및 보안과 성능을 제공하는 온라인 오브젝트(객체) 스토리지 서비스이다.(참고로 앞글자가 S 3개라서 S3 라고 한다.) 쉽게 말하자면, 스토리지 즉 구글 드라이브처럼 파일 저장 서비스이며, 데이터를 온라인으로 오브젝트 형태로 저장하는 서비스라고 보면 된다.앞에 온라인이라는 글자가 붙는 이유는 데이터 조작에 HTTP/HTTPS를 통한 API가 사용되기 때문이다.또한 편리한 UI 인터페이스를 통해 어디서나 쉽게 데이터를 저장하고 불러올 수 있어 개발자가 쉽게 웹 규모 컴퓨팅 작업을 수행할 수 있도록 한다. S3는 저장하는 데이터 양에 대한 비용도 저렴하고, 저장할 수 있는 데이터 양이 무한에 가깝다. 또한..
- Spring Security + JWT 토큰을 통한 로그인 구현2024-05-16 10:05:39현재 앱 개발을 위해 REST API를 사용 중인데 로그인한 사용자 정보를 Session에 저장하는 방식은 REST의 stateless를 위반하기 때문에 JWT를 선택하였다.JWTJWT(Json Web Token)은 일반적으로 클라이언트와 서버 통신 시 권한 인가(Authorization)을 위해 사용하는 토큰이다.JWT 이해하기기본 동작 원리는 간단하다.클라이언트에서 ID/PW를 통해 로그인 요청서버에서 DB에 해당 ID/PW를 가진 User가 있다면, Access Token과 Refresh Token을 발급해준다.클라이언트는 발급받은 Access Token을 헤더에 담아서 서버가 허용한 API를 사용할 수 있게 된다.Access Token & Refresh Token에 관한 정보는 여기를 클릭만약 R..
- JWT 핸드북 요약 및 한글 번역2024-05-14 22:48:231. 소개JSON Web Token (JWT): 공간이 제한된 환경에서 클레임을 안전하게 전달하기 위한 표준.주요 특징: 간단함, 컴팩트함, 사용성.역사: 2011년 JOSE 그룹이 JWT, JWS, JWE, JWK, JWA RFC를 개발.2. 실용적인 응용클라이언트 측 세션: 서명 및 암호화를 통해 세션 데이터를 보호.연합 신원: OAuth2 및 OpenID Connect와 함께 사용.예시: 쇼핑 카트 애플리케이션에서 JWT를 사용하여 클라이언트 측 상태 관리.3. JWT의 세부 사항헤더: JWT 자체에 대한 정보를 포함.페이로드: 사용자 데이터 및 등록된 클레임 포함.서명되지 않은 JWT: 서명이나 암호화 없이 사용 가능하지만 드물게 사용됨.4. JSON 웹 서명 (JWS)구조: 헤더, 페이로드, 서..
- ThreadLocal이란?2024-04-28 12:51:55Thread Local이란?Java에서 지원하는 Thread safe한 기술로 멀티 스레드 환경에서 각각의 스레드에게 별도의 저장공간을 할당하여 별도의 상태를 갖을 수 있게끔 도와준다. ThreadLocal이 필요한 이유예를들어 Spring의 tomcat을 보면 매 요청마다 생성해놓은 Thread pool에서 Thread를 할당하여 유저의 요청을 처리하도록 되어있다. 여기서 문제가 발생하는데 Spring에서 bean을 등록하게 되면 해당 객체는 단 1개만 만들어져서 모든 Thread가 공유하여 사용하도록 되어있다. 이때 해당 인스턴스의 특정 필드를 모든 Thread가 공유하게 되는 것인데 여기서 Thread 동기화 문제가 발생하게 된다. 이해하기 쉽도록 그림을 통해 예시를 들어보도록 하겠다.fieldSe..
- [Apache Kafka] 카프카란 무엇인가?2024-04-02 15:25:17카프카(Kafka)란? 카프카(Kafka)는 파이프라인, 스트리밍 분석, 데이터 통합 및 미션 크리티컬 애플리케이션을 위해 설계된 고성능 분산 이벤트 스트리밍 플랫폼이다. Pub-Sub 모델의 메시지 큐 형태로 동작하며 분산환경에 특화되어 있다. 카프카의 탄생 배경 비즈니스 소셜 네트워크 서비스인 링크드인(linked-in)에서 개발했다. 다음은 카프카 개발 전 링크드인의 데이터 처리 시스템이다. 1. 기존 데이터 시스템의 문제점 각 애플리케이션과 DB가 end to end로 연결되어 있고(각 파이프라인이 파편화 되어있음), 요구사항이 늘어남에 따라 데이터 시스템 복잡도가 높아지면서 다음과 같은 문제가 발생하게 되었다. 1. 시스템 복잡도 증가 (Complexity) 통합된 전송 영역이 없어 데이터 흐름..
- RDBMS와 NoSQL이란?2024-04-02 09:54:35RDBMS와 NoSQL? RDBMS란 테이블을 통해 정형화된 데이터를 저장하고, 테이블끼리 관계를 맺을 수 있다. 또한 제약 조건을 통해 데이터의 중복을 피할 수 있다. 테이블끼리 관계를 맺을 수 있으니 경우에 따라 테이블을 나누어 데이터를 관리할 수 있고 데이터를 조회해 올 때 'JOIN'을 사용해 나누어져 있는 테이블의 데이터를 불러올 수 있다. 제약 조건을 통해 데이터 중복을 막을 수 있으며 이는 데이터를 수정해야 할 때 수많은 데이터를 찾아 수정해야 하는 번거로움을 줄여줍니다. NoSQL란 NoSQL은 비관계형 데이터 저장소 역할을 한다. 기존 RDBMS은 scale-up(수직적 확장)을 해야 하는 한계가 있다. NoSQL은 수평적 확장을 손 쉽게 할 수 있어 많은 데이터를 저장하고 분산 처리를 ..
- 컴퓨터의 구성2024-03-28 22:30:12컴퓨터 시스템은 크게 하드웨어와 소프트웨어로 나누어진다. 하드웨어 : 컴퓨터를 구성하는 기계적 장치 소프트웨어 : 하드웨어의 동작을 지시하고 제어하는 명령어 집합 하드웨어 중앙처리장치(CPU) 기억장치 : RAM, HDD 입출력 장치 : 마우스, 프린터 소프트웨어 시스템 소프트웨어 : 운영체제, 컴파일러 응용 소프트웨어 : 워드프로세서, 스프레드시트 하드웨어에 대해 살펴보자 하드웨어는 중앙처리장치(CPU), 기억장치, 입출력장치로 구성되어 있다. 이들은 시스템 버스로 연결되어 있으며, 시스템 버스는 데이터와 명령 제어 신호를 각 장치로 실어 나르는 역할을 한다. 중앙처리장치(CPU) 인간으로 따지면 두뇌에 해당하는 부분 주기억장치에서 프로그램 명령어와 데이터를 읽어와 처리하고 명령어의 수행 순서를 제어함..
- JWT (JSON Web Token) 이해하기2024-03-27 16:50:42JWT 란? JWT(JSON Web Token)은 약자대로 JSON 객체를 이용해서 토큰 자체에 여러 정보를 담을 수 있고 토큰을 이용해 인증 처리할 수 있는 것을 말한다. JWT 구조 JWT 구조는 3가지로 분류할 수 있다. header header는 signature를 해싱하기 위한 알고리즘 정보를 담는 공간이다. payload payload는 서버와 클라이언트가 주고받을 수 있는 정보(시스템에 사용되는 정보)를 담을 수 있는 공간이다. signature signature는 해당 Token의 유효성을 검증하기 위한 정보 공간이다. 이 signature를 통해 해당 Token이 유효한지 체크하게 된다. JWT 검증 방법 이제부터 JWT가 어떻게 해당 토큰이 유효한 것인지 알아보겠다. eyJhbGciOi..