분류 전체보기 552

[SQLD 이론 기초] 1. 데이터베이스란

* 해당 포스팅은 패스트캠퍼스 '데이터베이스와 SQLD 합격패스 Online' 강의를 듣고 공부한 내용을 정리한 것입니다. 1. 데이터베이스란 다양한 정보를 체계적이고 효율적으로 관리하기 위해 컴퓨터 시스템에 전자적으로 저장된 데이터의 집합을 의미합니다. 대용량의 데이터를 저장하고 조회합니다. 데이터베이스를 사용하기 전에는 '텍스트 파일형태'로 저장하고 관리합니다. DBMS (데이터베이스 관리 시스템) 데이터베이스에 저장된 데이터를 관리하고, 사용자의 요구사항에 따라 적절하게 처리하고 응답해주는 시스템입니다. 사용자는 복잡한 내부 구조나 데이터의 물리적 위치에 신경 쓰지 않고, 필요한 정보에 직접적으로 접근하고 활용할 수 있습니다. 특징 실시간 접근성 : 사용자의 요구에 따라 실시간으로 데이터베이스 내 ..

Database 2021.07.28

[Spring Security] 3. 인증: 아키텍쳐

1. 인증 저장소 - SecurityContextHolder, SecurityContext SecurityContextHolder 인증된 유저의 정보를 보관하는 저장소입니다. 다양한 방식의 인증 정보를 저장할 수 있습니다. 저장되는 인증 정보의 타입만 맞으면 됩니다. JWT, LDAP, OAuth, SSO 등 인증 정보를 저장하는 것이 사용자가 인증되었음을 나타내는 가장 간단한 방법입니다. SecurityContextHolder안에 담긴 SecurityContext(인증 정보)를 어떻게 보관할지 전략을 설정할 수 있습니다. SecurityContextHolderStrategy SecurityContextHolder 내의 MODE_ 로 시작하는 static 변수로 선언되어 있습니다. MODE_GLOBAL ..

[Spring Security] 2. 스프링 시큐리티 주요 아키텍처

1. 위임 필터 및 필터 빈 초기화DelegatingFilterProxy요청 처리 용 (FilterChain에 등록됨)Spring 제공 (Filter 인터페이스 구현) 위임자Spring에 등록된 Bean Filter 사용FilterChainProxyBean Filter를 체이닝한 Proxy Bean작업 처리를 위임받습니다.FilterChainProxy 찾기: 'springSecurityFilterChain'라는 이름으로 Bean을 검색하여 찾습니다. 브릿지Servlet Container와 ApplicationContext 통합 (다른 라이프사이클 해결)FilterChain은 Servlet Container가 초기화 전에 Bean Filter의 인스턴스를 가지고 있어야 합니다.그러나 FilterChain ..

[Spring Security] 2-1. 인증 필터

Security Bean Filter는 SecurityFilterChain API를 통해 FilterChainProxy에 삽입됩니다. Security Bean Filter는 인증, 인가, 보안 등을 목적으로 만들어진 다양한 구현체들이 존재합니다. 1. BasicAuthenticationFilter - HTTP Basic 인증 보호자원 접근 시 서버가 클라이언트에게 401응답과 함께 'WWW-authenticate-header'을 기술해서 인증요구를 보냅니다. Client는 ID:Password 값을 Base64로 Encoding한 문자열을 Authentication Header에 추가한 뒤 Server에게 Resource를 요청 ID, Password가 Base64로 Encoding되어 있어 ID, Pa..

[ 쿠버네티스 입문: 90가지 예제로 배우는 컨테이너 관리 자동화 표준 ] Chapter18. 오토스케일링

18. 1 HPA의 구조 HPA는 컨트롤러 매니저(kube-controller-manager) 안에서 주기적으로 실행하면서 설정된 HPA의 상태를 확인함. HPA가 디플로이먼트에 속한 파드들의 상태를 모니터링하다가 지정된 조건에 이르면 디플로이먼트를 스케일해서 파드 개수를 늘리거나 줄임. 지정된 자원을 API로 먼저 확인한 후 조건에 맞을 때 HPA가 오토스케일링함. 18.2 HPA 설정하기 targetCPUUtilizationPercentage : CPU사용률이 얼마일 때 오토스케일링을 적용할 지 설정함.

DevOps/Kubernetes 2021.07.22

[ 쿠버네티스 입문: 90가지 예제로 배우는 컨테이너 관리 자동화 표준 ] Chapter17. 로깅과 모니터링

17.1 로깅 오케스트레이터를 사용하는 환경에서 로그를 수집할 때 로그를 로컬 디스크에 파일로 저장하지 말아야 함. 쿠버네티스는 특정 앱 컨테이너의 로그를 확인하려면 전체 클러스터의 노드 중 어떤 노드에 해당 컨테이너가 실행되었는지 확인해야 로그도 확인이 가능함. 파드 로그 확인하기 ‘Kubectl logs -f 파드이름’ : 파드의 로그 확인 2. 일래스틱서치로 로그를 수집한 후 모아서 보기 로컬 디스크에 로그를 저장하면 용량 문제로 삭제한 예전 로그들을 확인할 수 없음. 장비 각각에 저장한 로그를 한 곳에 모아서 살펴보도록 서버를 구축함. 일래스틱서치 파드를 배포하고 서비스를 붙여 외부에 노출시킴. 키바나는 일래스틱서치의 데이터를 검색하므로 접근할 도메인을 알아야함. env의 ELASTICSEARCH..

DevOps/Kubernetes 2021.07.22

[ 쿠버네티스 입문: 90가지 예제로 배우는 컨테이너 관리 자동화 표준 ] Chapter16. 쿠버네티스 DNS

16.1 쿠버네티스 DNS 클러스터 안에서만 사용하는 DNS 설정 가능. 파드 사이에 통신 시 도메인 사용 가능. IP로 통신 설정시 IP 대역이 다를 때 수정해야 하므로 번거로움 16.2 클러스터 안에서 도메인 사용하기 내부 도메인은 서비스와 파드를 대상으로 사용하며 일정한 패턴이 있음. 서비스 접근 :’서비스이름.네임스페이스이름.svc.cluster.local’처럼 구성함. 파드 접근 : ’파드IP주소.네임스페이스이름.pod.cluster.local’처럼 구성함. 단 IP주소를 사용하면 의미가 없음 그러므로 파드 생성 시, 호스트네임과 서브 도메인을 설정해서 사용하기 .spec.template.spec.hostname .spec.template.spec.subdomain 설정 시, ’호스트네임이름.서..

DevOps/Kubernetes 2021.07.22

[ 쿠버네티스 입문: 90가지 예제로 배우는 컨테이너 관리 자동화 표준 ] Chapter15. 클러스터 네트워킹 구성

15.1 파드 네트워킹 쿠버네티스는 파드에 IP를 할당함. 파드들은 IP를 이용해 서로 통신함. 도커 컨테이너의 네트워킹 도커 브리지 타입 네트워크는 호스트안에 docker() 라는 브리지를 추가해 컨테이너와 호스트 사이를 연결함. docker()는 호스트의 네트워크 네임스페이스라 함. 호스트의 기본 네트워크는 여기서 만들어지고 관리함. container1(veth0)과 container2(veth1)는 컨테이너 네트워크 네임스페이스라고 함. 컨테이너를 생성할 때마다 만들어지고 컨테이너마다 별도의 네트워크를 사용할 수 있도록 함. veth는 한쪽 끝은 컨테이너, 다른 한쪽 끝은 호스트의 브리지(docker() )를 연결하여 호스트 네임스페이스와 컨테이너 네임스페이스 사이를 통신함. 도커 컨테이너 네트워킹..

DevOps/Kubernetes 2021.07.22

[ 쿠버네티스 입문: 90가지 예제로 배우는 컨테이너 관리 자동화 표준 ] Chapter14. 데이터 저장

14.1 볼륨 컨테이너는 기본적으로 상태가 없는 앱 컨테이너를 사용함. -> 다른 노드로 자유롭게 옮길 수 있음 -> 상태를 저장할 수 없어 컨테이너가 재시작시 데이터가 사라짐 데이터를 보존하기 위해 볼륨을 사용함. 볼륨은 클라우드 볼륨 서비스, 디스크, 서버 컨테이너 볼륨 플러그인 등 다양한 종류가 있음 .spec.container.volumeMounts.mountPropagation : 파드 안에있는 컨테이너끼리 혹은 노드 안에 파드들끼리 공유할 지 설정 None : 컨테이너가 만들어 놓은 마운트를 호스트에서 볼 수 없음. HostToContainer : 호스트에서 해당 볼륨 하위에 마운트된 다른 디렉터리들도 볼 수 있음 Bidirectional : 호스트 안 모든 컨테이너나 파드에서 같은 볼륨을 사..

DevOps/Kubernetes 2021.07.22

[ 리팩토링 by 마틴 파울러 ] Chapter12. 상속 다루기

12.1 메서드 올리기 12.2 필드 올리기 12.3 생성자 본문 올리기 생성자는 할수 있는 일과 호출순서에 제약이 있음 (생성될 때만 호출, 리턴 X, 오브젝트 초기화 용도) 부모-자식의 클래스 중, 생성자 호출 단계에서 부모의 생성자를 호출하지 않는 자식의 경우가 있다면 체크 후 자식 생성자에 따로 알맞은 로직을 호출하도록 코딩한다 12.4 메서드 내리기 12.5 필드 내리기 12.6 타입 코드를 서브클래스로 바꾸기 타입코드 비슷한 대상들을 특정 특성에 따라 구분해야 할 때 서브 클래스로 생성하여 조건에 따라 다르게 동작하는 다형성 제공하기 특정 타입에서만 의미가 있는 값을 사용하는 필드나 메서드가 있을 때 사용하기 직접 상속 Employee를 상속한 클래스가 타입에 따라 Engineer, Manag..

Code/Refactoring 2021.07.22