로그인 기능을 구현하다보니 Spring Security의 인증 과정에 대해 공부해야 했고, 그 중 아이디와 패스워드를 사용한 인증은 어떤 식으로 이뤄지는가에 대해 정리해 보았습니다.스프링 시큐리티가 제공하는 필터들WebAsyncManagerIntergrationFilterSecurityContextPersistenceFilterHeaderWriterFilterCsrfFilterLogoutFilterUsernamePasswordAuthenticationFilterDefaultLoginPageGeneratingFilterDefaultLogoutPageGeneratingFilterBasicAuthenticationFilterRequestCacheAwareFilterSecurityContextHolderAwar..
Spring Actuator란?DB 연결 및 애플리케이션의 성능 상태를 모니터링할 수 있는 기능이다. 그라파나 등이랑도 함께 사용할 수 있다고 한다.주로 health check 용도의 endpoint로 많이 사용된다. 사용 방법아래의 의존성만 추가해주면 /actuator로 접속하면 모니터링 된 내용들을 볼 수 있다.# build.gradledependencies { implementation 'org.springframework.boot:spring-boot-starter-actuator'}/actuator/health에 접속하면 아래와 같이 “UP”으로 서버가 살아있음을 나타내고 있는데, “components”들을 보면 어떤 것들을 헬스 체크를 하고 최종적으로 해당 서버가 살아있음을 나타내는지 보..
그림과 실습으로 배우는 도커 & 쿠버네티스를 읽고 중요하다고 생각한 부분을 정리한 글입니다. 쿠버네티스의 클러스터는 마스터 노드와 워커 노드라는 두 가지 노드로 구성 된다.마스터 노드에서 컨테이너를 실행하지는 않으며 워커 노드에서 실행되는 컨테이너를 관리하는 역할을 한다.마스터 노드에는 컨테이너 등의 상태를 관리하기 위해 `etcd`라는 데이터베이스가 설치된다. CNI(가상 네트워크 드라이버)ex. 플란넬, 칼리코, AWS VPC CNI 등 마스터 노드(컨트롤 플레인)의 구성항목내용kube-apiserver외부와 통신하는 프로세스, kubectl로부터 명령을 전달받아 실행한다.kube-controller-manager컨트롤러를 통합 관리, 실행한다.kube-scheduler파드를 워커 노드에 할당한다...
record란?간단히 설명하자면 "데이터 클래스"이며 순수하게 (불변)데이터를 보유하기 위한 특수한 종류의 클래스다. 이를 사용하면 데이터를 객체 간에 전달하는 작업을 간단하게 만들어준다.JDK14에서 preview로 등장하여 JDK16에서 정식 기능으로 포함예시String 값으로 name, Integer 값으로 age라는 변수를 갖고 있는 User라는 클래스 구현한다고 가정하자.일반 클래스로 구현한 User 클래스public class User { private final String name; private final Integer age; public User(String name, Integer age) { this.name = name; this.age = age; ..
JVM(Java Virtual Machine)이란?운영체제의 메모리 영역에 접근하여 메모리를 관리하는 프로그램메모리 관리, Garbage Collector 등을 수행하게 된다.Garbage Collector란?동적으로 할당한 메모리 영역 중 사용하지 않는 영역을 탐지하여 해제하는 기능을 맡고 있다.C, C++의 경우 사용자가 직접 메모리를 할당 받고, 해제해야 한다.(malloc(), free()와 같은 함수를 사용)하지만 Java에서는 GC의 기능이 Heap 메모리에서 unreachable한 객체를 자동으로 삭제 해 준다.(참고) Heap과 Stack은 또 뭐지?Stack정적*으로 할당한 메모리 영역원시 타입의 데이터가 값과 함께 할당, Heap 영역에 생성된 Object 타입의 데이터의 참조 값을 할..
DTO란?DTO(Data Transfer Object)란 계층간 데이터 교환을 하기 위해 사용되는 객체로 Getter/Setter만 가진 클래스주로 View와 Controller 사이에서 활용데이터 전달만을 위한 객체이므로 java-record로 구현하면 좋음도메인 대신 DTO를 사용하면 좋은 이유DTO 대신 도메인 모델을 계층간 전달에 사용하면 도메인 모델을 캡슐화 하여 보호할 수 있다.view마다 필요한 정보가 다른데, 도메인 모델의 경우 필요하지 않은 정보까지 갖고 있기 때문이다.해당 사진은 MVC 패턴(출처-위키백과)을 간략하게 나타낸 사진이다.MVC 패턴에서 Controller는 Model과 View 사이에서 데이터를 주고 받는다.이 과정에서 Model을 바로 Controller에게 넘겨준다면 ..