목록백엔드 (18)
윤개발
스프링 시큐리티에 대해 제대로 알고 쓰기위해 공식문서를 쭉 읽어보았고 개발시에 알아야될 부분을 정리해보았습니다. docs.spring.io/spring-security/site/docs/5.4.6/reference/html5/#servlet-architecture Spring Security Reference In Spring Security 3.0, the codebase was sub-divided into separate jars which more clearly separate different functionality areas and third-party dependencies. If you use Maven to build your project, these are the modules yo..
용어 설명 Authentication(인증) : 사용자가 본인인지 맞는지 확인 Authorization(권한) : 인증된 사용자가 요청에 접근 가능한지 확인 기본 원리 Client의 요청은 Filter Chain을 거쳐 처리된다. 여러 필터를 지나며 인증이 완료되면 해당요청은 인증된 요청이 된다. 모든 필터를 지나며 인증되지 않았다면 인증되지 않은 요청(403)이 된다. 처리 방식 요청이 오면 인증을 담당하는 AuthenticationFilter에서 처리한다. UsernamePasswordAuthenticationToken을 만들어 AuthenticationManager(인터페이스)에게 위임한다. AuthenticationManager를 구현한 ProviderManager는 AuthenricationPr..
Kafka의 기본이 되는 토픽과 파티션에 대해서 알아보자. Topic (토픽) 전송되는 데이터 스트림을 토픽이라 한다. 토픽은 로그가 될수도 있고 어떠한 데이터도 될 수 있다. 그림에서는 hello 라는 이름의 토픽을 가지고 있다. 데이터베이스의 테이블과 유사하며 제약이 없다. 원하는 만큼 많은 토픽을 생성할 수 있다. (hello_1, hello_2, hello_3 ...) 각 토픽은 이름을 통해 구분된다. Partitions (파티션) 하나의 토픽은 여러개의 파티션으로 구분된다. 그림에서 hello 토픽은 3개의 파티션으로 나뉘게 된다. 파티션은 0 부터 증가하는 id로 구별되며 파티션0, 파티션1, 파티션2은 모두 다른 파티션이다. 각각의 파티션에는 전송된 데이터가 저장이 된다. 데이터가 기록되면 ..
Apache Kafka를 사용하는 이유를 간단하게 알아봅시다. 1. 초기 시스템 처음의 시스템은 사진처럼 단순한 형태를 가지고 있습니다. 예를 들어 웹사이트에서 사용자의 동작을 분석하는 시스템을 생각해봅시다. 데이터를 전송하는 시스템 ( 웹애플리케이션 ) 전송되는 데이터 ( 사용자의 페이지 이동, 동작 등의 데이터 ) 데이터를 받는 시스템 ( 데이터를 받아 처리하는 Spark 등 ) 하지만 추후에 분석해야할 페이지가 늘어나고 더 다양한 분석 시스템이 도입되어 시스템의 규모가 커진다면 어떻게 될까요? 2. 대규모 시스템 다수의 시스템이 생기면 그림처럼 각 시스템의 복잡도가 증가합니다. 4개의 소스시스템과 6개의 타켓 시스템이 모두 연결되어 있다고 가정하면 4*6=24 개의 통합과정이 필요합니다. 시스템 통..
Garbage Collection란? Java에서는 메모리 관리를 명시적으로 해제하지 않고 Garbage Collection(이하 GC)가 자동으로 수행한다. JVM이 GC를 실행할 때 GC를 실행하는 스레드를 제외한 모든 스레드를 중단하는데 이를 stop-the-world 라고한다. stop-the-world가 일어나면 다른 스레드가 실행되지 않기 때문에 GC를 튜닝한다는 것은 stop-the-world 시간을 최소화하는데에 있다. GC는 더이상 필요없는 객체(쓰레기)를 정리하는데 GC는 2가지의 가정하에 만들어졌다. - 대부분의 객체는 금방 접근 불가능한 객체가 된다. - 오래된 객체(생성된지 오래된)에서 젊은 객체(생성된지 얼마되지 않은)로의 참조는 거의 일어나지 않는다. 이러한 가설을 'weak ..
H2 database란? h2 db는 MySQL, oracle 같은 관계형 데이터베이스이다. h2 db는 이들과 다르게 경량 db이며 메모리가 매우 적다. 또한 db를 로컬에 저장하는 것이 아니라 메모리에 저장하는 것이기 때문에 테스트용으로만 써야한다. H2 설치 h2 db 사이트: https://www.h2database.com/html/main.html H2 Database Engine H2 Database Engine Welcome to H2, the Java SQL database. The main features of H2 are: Very fast, open source, JDBC API Embedded and server modes; in-memory databases Browser base..
기존 개발의 문제점 기존 개발은 객체를 관계형 데이터베이스(RDB)에 저장하는 방식으로 코드를 작성하였다. 그러다 보니 객체중심이 아닌 SQL 중심적인 개발을 하였다. 어떤 객체에 대해서 테이블마다 CRUD를 작성하는 반복되는 노가다 작업을 하고있다. 또한 수정사항이 생겨서 나중에 추가할 칼럼이 생긴다면 기존에 작성했던 CRUD 코드를 모두 수정해야하는 불편함을 겪는다. 이 과정에서 잊고 수정하지 않는 부분이 있다면 바로 장애를 유발한다. 상속 등의 객체를 잘 설계하여도 RDB에는 2번 이상의 쿼리를 날려야하는 불편함이 생긴다. 예를 들어 아래 그림처럼 Animal 이라는 객체는 id와 이름을 가지고 있다고 하자. 이를 상속받은 Dog는 품종을 가지고 있다. 객체지향적으로 잘 설계 하였지만 관계형 데이터..