전체 글 2621

[5장] 인증 구현

주의이 책은 Spring Security 5 버전을 기준으로 작성되었으므로, Spring Boot 3.X 버전에서는 일부 클래스가 더 이상 사용되지(deprecated) 않을 수 있습니다. 개요인증 논리를 담당하는 것은 AuthenticationProvider 계층이며 여기에서 요청을 허용할지 결정하는 조건과 명령을 발견할 수 있음AuthenticationManager는 HTTP 필터 계층에서 요청을 수신하고 해당 책임을 AuthenticationProvider에 위임하는 구성 요소요청을 나타내는 방법을 명확히 이해하려면 Authentication 인터페이스부터 알아야 함그런 다음 인증이 성공한 후 요청 세부 사항이 처리하는 방법을 배울 수 있으며 SecurityContext 인터페이스와 스프링 시큐리티..

[4장] 암호 처리

주의이 책은 Spring Security 5 버전을 기준으로 작성되었으므로, Spring Boot 3.X 버전에서는 일부 클래스가 더 이상 사용되지(deprecated) 않을 수 있습니다. 1. PasswordEncoder 계약의 이해 일반적으로 시스템은 암호를 일반 텍스트로 관리하지 않고 공격자가 암호를 읽고 훔치기 어렵게 하기 위한 일종의 변환 과정을 거침스프링 시큐리티에는 이 책임을 위해 정의된 별도의 계약이 있음 PasswordEncoder 계약의 정의PasswordEncoder는 인증 프로세스에서 암호가 유효한지를 확인함모든 시스템은 어떤 방식으로든 인코딩 된 암호를 저장하며 아무도 암호를 읽을 수 없도록 해싱 후 저장하는 것을 권장PasswordEncoder도 암호를 인코딩할 수 있으며 계약..

[3장] 사용자 관리

주의이 책은 Spring Security 5 버전을 기준으로 작성되었으므로, Spring Boot 3.X 버전에서는 일부 클래스가 더 이상 사용되지(deprecated) 않을 수 있습니다. 1. 스프링 시큐리티의 인증 구현빨간색 테두리가 있는 두 상자는 기본적으로 두 구성 요소 UserDetailsService와 PasswordEncoder두 구성 요소는 종종 `사용자 관리 부분`이라고 말하는 흐름의 일부분을 처리이 단원에서 UserDetailsService 및 PasswordEncoder는 사용자 세부 정보와 자격 증명을 직접 처리하는 구성 요소 사용자 관리를 위해서는 UserDetailsService 및 UserDetailsManager 인터페이스를 이용UserDetailsService는 사용자 이..

[2장] 스프링 시큐리티 기본 구성

주의이 책은 Spring Security 5 버전을 기준으로 작성되었으므로, Spring Boot 3.X 버전에서는 일부 클래스가 더 이상 사용되지(deprecated) 않을 수 있습니다. 1. 기본 구성이란? 부연 설명AuthenticationFilter는 인증 요청을 AuthenticationManager에 위임하고 응답을 바탕으로 SecurityContext를 구성AuthenticationManager는 AuthenticationProvider를 이용해 인증을 처리AuthenticationProvider는 인증 논리를 구현AuthenticationProvider는 사용자 관리 책임을 구현하는 UserDetailsService를 인증 논리에 이용AuthenticationProvider는 암호 관리를..

백준 Hello, AlKon! 2025

백준 33701번 새천년관단순 구현 문제 백준 33702번 비밀번호DFS와 비트마스크를 결합한 백트래킹으로 그래프 상의 모든 해밀토니안 경로를 세는 문제 백준 33703번 건덕이의 돌탑하노이 탑 이동 문제와 달리 `중간에 있는 돌도 한 번에 꺼낼 수 있다`는 제약 완화 덕분에어떤 방석에서 가장 큰 돌을 제외한 모든 돌은 언제든지 단 한 번의 이동으로 꺼낼 수 있고꺼낸 돌을 놓을 때에도 빈 방석 또는 더 큰 돌이 있는 방석 위에만 놓으면 되므로 그 방석 내 정렬이 자동으로 보장됨 위 두 가지를 이용하면, 개별 돌 하나를 세 번째 방석에 놓기까지 필요한 이동 횟수를 돌 크기별로 합산하는 방식으로 해를 구할 수 있음맨 밑의 돌이 아니라면 한 번에 꺼낼 수 있으므로, 돌 k를 꺼내는 데는 그 위에 있는 더..

알고리즘/BOJ 2025.05.17

[17장] 샤딩 관리

1. 현재 상태 확인데이터 위치, 샤드 구성 및 클러스터 실행 작업을 조회할 수 있는 몇 가지 보조자가 있음 1.1 sh.status()를 사용해 요약 정보 얻기sh.status()는 샤드, 데이터베이스, 샤딩된 컬렉션의 개요를 제공청크의 개수가 적을 경우 어느 청크가 어디에 위치하는지도 출력청크의 개수가 많을 경우 단순히 컬렉션의 샤드 키와 각 샤드가 갖는 청크 개수를 보고 1.2 구성 정보 확인하기클러스터에 대한 모든 구성 정보는 구성 서버의 config 데이터베이스 내 컬렉션에 보관되며 셸 보조자를 사용하면 구성 정보를 더 읽기 쉽게 볼 수 있음클러스터에 대한 메타데이터를 조회하려면 언제든지 config 데이터베이스를 직접 쿼리 할 수 있음일반적으로 config 데이터베이스에 들어 있는 데이터는..

[16장] 샤드 키 선정

1. 용도 평가컬렉션을 샤딩할 때는 데이터 분할에 사용할 한두 개의 필드를 선택하며 해당 키를 샤드 키라고 지칭컬렉션을 샤딩하고 나서는 샤드 키를 변경할 수 없으므로 올바르게 선택하는 것이 중요함 좋은 샤드 키를 선정하려면 샤드 키가 애플리케이션의 요청을 분산하는 방법과 작업량 이해가 필요함샤드가 세 개인 클러스터는 샤드가 천 개인 클러스터보다 훨씬 유연함; 클러스터가 점점 더 커질 때, 쿼리가 모든 샤드를 방문해야 하는 쿼리를 피하기 위해서는 거의 모든 쿼리가 샤드 키를 포함해야 함쓰기 응답 대기 시간을 줄이는 일은 일반적으로 요청을 지리적으로 더 가까운 곳이나 더 좋은 장비로 보내는 작업과 관련 있음처리량을 늘리는 일은, 더 많은 병렬 처리 기능을 추가하고 클러스터에 요청을 균일하게 분산하는 작업과 ..

[15장] 샤딩 구성

1. 언제 샤딩해야 하나너무 일찍 샤딩할 경우 배포 운영이 더 복잡해지며 나중에 변경이 어려운 구조에 대한 결정을 내려야 한다는 단점 존재반면 너무 늦게 샤딩할 경우 과부하된 시스템을 중단 없이 샤딩하기 어렵다는 단점 존재일반적으로 샤딩은 다음과 같은 경우에 사용됨사용 가능한 메모리를 늘릴 때사용 가능한 디스크 공간을 늘릴 때서버의 부하를 줄일 때한 개의 mongod가 다룰 수 있는 처리량보다 더 많이 데이터를 읽거나 쓸 때 따라서 샤딩이 필요한 시점을 결정하는 데 모니터링이 중요하며, 각 지표를 주의 깊게 측정해야 함일반적으로 한 가지 병목 항목에 빠르게 맞닥뜨리게 되므로 어떤 항목을 프로비저닝할지 찾고, 복제 셋 전환 방법과 시기를 미리 계획하는 것을 권장 2. 서버 시작클러스터를 생성하려면 먼저 필..

[14장] 샤딩 소개

1. 샤딩이란샤딩은 여러 장비에 걸쳐 데이터를 분할하는 과정을 일컬으며, 때때로 파티셔닝이라는 용어로도 불림각 장비에 데이터의 서브셋을 넣음으로써, 수직 확장 없이도 더 많은 수의 덜 강력한 장비 (수평 확장)로 더 많은 데이터를 저장하고 보다 많은 부하를 처리할 수 있음더 자주 접근하는 데이터를 성능이 더 좋은 하드웨어에 배치하거나, 지역에 따라 데이터셋을 분할해 주로 접근하는 애플리케이션 서버와 가까운 컬렉션에서 도큐먼트의 서브셋을 조회할 수 있음 수동 샤딩은 어떤 데이터베이스 소프트웨어를 사용하든 대부분 수행 가능수동 샤딩을 사용하면 애플리케이션이 여러 데이터베이스 서버와 연결을 유지하며, 각 서버는 완전히 독립적애플리케이션은 각기 다른 데이터를 다른 서버에 저장하고, 데이터를 조회하기 위해 적절한..

[RDBMS] 트랜잭션

1. 트랜잭션 개요트랜잭션은 데이터베이스에서 원자적 (Atomic)이고, 일관적 (Consistent)이며, 격리 (Isolated)되고, 영속적 (Durable)인 작업 단위실무에서는 동시 사용자 요청, 서버 장애, 네트워크 오류 등 다양한 이슈가 존재하기 때문에 트랜잭션의 안정적 관리가 필수적트랜잭션을 적용하지 않았을 경우 흔히 발생하는 문제로는, 동시에 여러 인출 요청이 들어와 체크-후-실행 (check-then-act) 로직이 깨져서 음수 잔고나 데이터 불일치가 생기는 케이스i.g. 금융, 암호화폐 등 돈이 오가는 시스템에서는 동시성 제어나 트랜잭션 오류가 심각한 보안사고, 해킹, 자산 손실로 이어질 수 있음을 FlexCoin 해킹 사례 2. ACID Atomicity (원자성)트랜잭션은 전부 실..

DB 2025.05.14