분류 전체보기 55

JWT (JSON Web Tokens) - JWS와 JWE

JWT는 Token 기반 인증에서 RFC 7519 의 표준으로 지정된 Token ※ Claim이란 어떠한 주제에 관해 주장하는 정보이며, name/value pair로 표시한다. 1. Javascript Object Signing and Encryption (JOSE)Claim을 안전하게 전송하기 위한 프레임워크JWK, JWS, JWE, JWT 등을 포함한다. 2. JWK(Json Web Key): 암호화 키를 나타내는 Json Data 구조jwk = {'k': }위와 같이 표현되며, k가 key 혹은 password를 나타낸다. 3. JWS(Json Web Signature): Set of claims에 signature(서명)을 하여 Base64Url로 Encodingimport joseclaims ..

Airflow 파헤치기 - 아키텍쳐 구조

Airflow에는 4가지 종류의 로그가 존재한다.Task/Scheduler/WebServer/Worker하지만 Task 로그를 제외하고는정작 Airflow에 문제가 발생했을 때, 내가 원하는 로그가 대체 어디에 출력되는 건지 알기가 힘들다. 이에 각 상황별 로그가 어디로 흘러가는지에 대해 정리하고자 한다. Airflow Architecture에 대한 이해이를 위해서 우선적으로 해야할 것은 Airflow를 이해하는 것이다. Web ServerWeb Server는 Airflow의 UI(User Interface)로, 사용자가 DAG 및 태스크의 상태를 모니터링하고 관리이를 통해 DAG을 수동으로 트리거하거나, 실패한 태스크를 재실행하고, 로그를 확인하는 등의 작업이 가능웹 서버는 Flask 프레임워크를 기반..

Data 2024.11.13

Elasticsearch (엘라스틱서치)의 기본 랭킹 알고리즘 - BM25

TF-IDF정보 검색과 텍스트 마이닝 등에서 사용되는 가중치이다.여러 문서로 이루어진 문서군에서 특정 문서 내에서 어느 단어가 얼마나 중요한지를 나타내는 통계적 수치이다.TF: Term Frequency하나의 문서 내에 여러 번 등장하는 단어의 중요도는 어떨까?예를 들면 ChatGPT를 설명하는 글에서는 "ChatGPT" 라는 단어가 아주 잦은 빈도로 등장할 것이다.이것은 굉장히 중요한 단어이다. IDF: Inverse Document Frequency많은 문서에서 등장하는 단어는 어떨까?예를 들면 "굉장히", "다양한" 같은 문서일 것이다.이것은 중요하지 않은 단어이다. TF-IDF는 이에 착안하여 특정 단어의 중요도를 나타내는 계산 방식이다.다만 문서의 숫자가 너무 많아질수록 기하급수적으로 값이 커지..

Java의 Slf4j, Logging Framework와 Dependency

SLF4J (The Simple Logging Facade for Java)Java에는 Logback, Log4j2와 같은 다양한 Logging Framework이 있다.내가 예를 들면 Apache Project를 개발하고 있다고 해보자.실제 사용자가 어떤 Framework을 사용할지 모르니 Logback에 대한 코드, Log4j2에 대한 코드 등을 모두 추가해야할까?  이런 때에 가장 적합한 Design Pattern이 Facade Pattern이다. 공통된 기능을 가지는 여러 Library를 단일 API를 이용하여 활용하도록 해주는 것이다.이름에서도 알 수 있듯이 이 Facade Pattern 이용하여 여러 Framework에 대한 고려를 해주는 것이 SLF4J이다! SLF4J를 이용한다면 코드 내부..

기타 주제 2024.09.02

Maven / Gradle의 Dependencies Conflicts

Maven DependenciesLibrary 들을 project files인 pom.xml 내의 선언하게 된다.Maven에서는 이 Library 들을 Dependencies에 선언하고,이를 일반적으로 Library가 아닌 Dependencies(Dependency)라고 부른다. 프로젝트에 사용되는 모든 dependencies는 그 자체가 선언되거나 parents에 의해 dependencies로 선언되어 있다.. ... group-a artifact-a 1.0 group-c excluded-artifact group-a artifact-b 1...

기타 주제 2024.09.02

트랜잭션 격리 수준 / Transaction Isolation Level

트랜잭션 격리수준(isolation level)이란 동시에 여러 트랜잭션이 처리될 때, 트랜잭션끼리 얼마나 서로 고립되어 있는지를 나타내는 것이다.크게 아래 4단계로 분류한다.READ UNCOMMITTED어떤 트랜잭션의 변경내용이 COMMIT이나 ROLLBACK과 상관없이 다른 트랜잭션에서 보여진다.사용되지 않는 격리수준READ COMMITTED어떤 트랜잭션의 변경 내용이 COMMIT 되어야만 다른 트랜잭션에서 조회할 수 있다.Oracle DB에서 사용NON-REPETABLE READ 정합성 문제 발생하나의 Transaction 내에서 READ를 여러 번 할 경우 결과가 다른 문제REPEATABLE READ트랜잭션이 시작되기 전에 커밋된 내용에 대해서만 조회한다.즉, 자신의 Transaction Id보다..

Data 2024.07.07

Spring JPA Transactional과 Transaction Isolation Level 격리수준 실습

2022.11.04 - [Backend & Spring (스프링)] - Spring Data JPA와 Hibernate. 그리고 Persistence Spring을 이용해 RDB를 다루면 JPA, Transactional과 DB 격리 수준에 대해서 많이 들어보았을 것이다.다만, 각각에 대해서는 잘 들어봤더라도서로 정확히 어떻게 동작하는지, 어떤 경우에 에러가 발생하는지에 대한 정보는 부족하다. 이 글에서는 특히 Transactional과 Database Isolation Level에 대한 관계를 실제 코드를 이용해서 실험해보고자 한다. 격리 수준에 대한 자세한 내용은 다음 링크 참고 - 2024.06.21 - [Data] - 트랜잭션 격리 수준 / Transaction Isolation Level 현재 ..

Data 2024.06.21

Project Reactor 테스트

TestPublisher source = TestPublisher.createNoncompliant(TestPublisher.Violation.ALLOW_NULL); StepVerifier Operator 체인이 시나리오대로 동작하는지 테스트 StepVerifier .create(Mono.just("Hello Reactor")) // 테스트 대상 Sequence 생성 .expectNext("Hello Reactor") // emit 된 데이터 검증 .as("expect Hello Reactor") .expectComplete() // onComplete Signal 검증 .verify(); // 검증 실행. expectSubscription() expectComplete() expectError() ex..

Project Reactor 디버깅하기 - Debug Project Reactor

디버깅의 어려움기존의 Blocking 프로그래밍에서 Exception이 발생한 경우Exception의 Stacktrace 를 출력하여 확인하거나Breakpoint를 걸어서 문제가 발생한 원인을 단계적으로 찾아가면 되기 때문에 상대적으로 디버깅이 쉽다. 하지만 Reactor는 대부분 비동기적으로  실행되며 선언형 프로그래밍 방식으로 구성되므로 디버기이 쉽지 않다.이를 위해 Reactor에서 몇 가지 방법을 제공한다. 디버그 모드 (Debug Mode)Hooks.onOperatorDebug()Debug Mode 활성화하는 코드  static { fruits.put("banana", "바나나"); fruits.put("apple", "사과"); fruits.put("..

OAuth 2.0 & OIDC with JWT

Authorization (허가) Authentication (인증) 총 정리 - MAC AEAD 에 이어지는 글9. JWT (JSON Web Tokens)2024.12.13 - [Backend & Spring (스프링)/Authorization & Authentication] - JWT (JSON Web Tokens) - JWS와 JWE JWT (JSON Web Tokens) - JWS와 JWEJWT는 Token 기반 인증에서 RFC 7519 의 표준으로 지정된 Token ※ Claim이란 어떠한 주제에 관해 주장하는 정보이며, name/value pair로 표시한다. 9-1. Javascript Object Signing and Encryption (JOSE)Claim을 안전하게jw92.tistory..

반응형