프론트엔드의 반응형 프로그래밍 끊임없이 변화하는 데이터 스트림을 다루는 비동기적 프로그래밍으로 이벤트를 발견하는 관찰자와 발생한 이벤트에 반응하는 핸들러의 구성을 다룬다. 실시간으로 사용자가 발생한 이벤트로 생긴 데이터의 변화를 새롭게 DOM으로 렌더링해야 되는 프론
PathResourceResolver를 통해 외부에서 들어오는 URL 요청이 들어올 때 서버가 어떤 경로의 정적 파일을 반환할지를 지정해준다. addResourceHandler를 통해 모든 URL 목록을 처리할 수 있도록 등록하고 addResourceLocations을
MockMvc는 Spring MVC의 컨트롤러에 대한 통합 테스트를 지원하는 테스트 프레임워크이다. MockMvcBuilder MockMvc 객체를 생성할 때 MockMvcBulider의 standaloneSetup를 사용하게 되면 개별 컨트롤러에 대한 단위 테스트가
데이터베이스에서의 병행제어 및 회복작업의 논리적인 단위로 하나의 트랜잭션은 하나 이상의 DML들로 구성되어 있다. 애플리케이션이 작업하는 논리적인 하나의 작업은 여러 DML로 이뤄져 있는 경우가 많고 이 작업 단위를 기준으로 회복작업과 병행제어를 해야 되기 때문에 이를
Sharding 서비스가 성장하게 되면 자연스럽게 많은 트래픽이 데이터베이스에 몰리면서 부하가 커지고 데이터베이스에 저장하는 양이 늘어나게 되면서 데이터베이스의 성능 향상을 위해 데이터를 분산저장할 수 있는 데이터베이스 샤딩을 하게 된다. 샤딩은 관리 측면에서 복잡하고
프로그래머스에서 진행하는 채용 프로그램인 데브매칭은 코딩테스트의 일정 수준을 넘기게 되면 참여한 기업 중 내가 선택한 10개의 기업과의 정규직 채용과정을 진행할 수 있는 개발자 친화적인 채용 프로그램이다. 다양한 직군에 대한 채용 프로그램도 진행되지만 그 중 백엔드 개
메세지큐 메세지 큐는 응용 소프트웨어 간의 비동기 통신을 위한 메시지 지향 미들웨어를 구현한 시스템으로 producer로부터 들어오는 메세지(요청)를 큐에 담고 consumer는 큐에 담긴 메세지를 꺼내 처리하는 방식의 구조로 구현되어 있다. 기존 동기적인 방식의 메세지 교환을 미들웨어의 비용을 추가하여 비동기식으로 처리하게 될 때 얻게 되는 장점은 다...
컴퓨터 구조에서 볼 수 있는 메모리 계층 구조는 프로세스 처리를 담당하는 cpu에 전달해야 하는 메모리를 빠르게 전달할 수 있는 목적을 두고 있어 빠른 메모리는 cpu에서 가깝게 위치하고 느린 메모리는 멀리 위치한 형태를 띄고 있다. 빠를 수록 비싸기 때문에 상위 계층
로컬 환경이 아닌 별도의 가상환경을 구성하는 방법이었던 하이퍼바이저를 사용하여 그 위에 게스트 OS를 올리는 방식의 단점을 개선하면서 등장하게된 프로세스 가상화 방식으로 docker는 별도의 게스트 OS 없이 docker 엔진 위에 가상환경 구동에 필요한 라이브러리와
원서 접수 프로그래머스에서 방학 기간 동안 진행하는 인턴 채용 프로그램의 특징은 코딩 테스트를 통과하게 되면 자신의 이력서가 지원한 기업들에게 모두 전달되는 간소화된 채용 과정이라는 점이다. 또한 인턴 채용 프로그램에 지원할 수 있는 기업의 최소 기준(회사 규모, 매출
Security Group aws 인스턴스 그룹에 대한 외부 네트워크와의 접속 허용 규칙과 관련된 설정을 지칭하는 것으로 외부에서 서버로의 규칙과 관련된 인바운드 규칙과 서버에서 외부로의 규칙과 관련된 아웃바운드 규칙 두 가지가 있다. 아래 사진처럼 접속을 허용하는
웹서비스의 배포 과정은 코드를 수정하고 빌드와 테스트를 한 후 클라우드 서버에 올리는 과정의 반복이다. 이러한 반복적인 빌드, 테스트, 배포 과정을 대신 수행해 개발에 대해 더 집중할 수 있는 장점을 제공하는 자동화 과정을 CI/CD(Continuous Integrat
JWTAuthenticationFilter 구현 과정 HTTP 요청 헤더에서 JWT 토큰이 있는지 확인한다. JWT이 유효힌 경우 loginId, roles을 추출하여 UsernamePasswordToken을 생성한다. SecurityContext에 UsernameP
JWT (Json Web Token) Session을 사용하는 방식의 경우 Stateful한 상태이기 때문에 수평확장에 어려움이 가지고 있어 이를 대신하여 Rest API에서 Stateless 상태를 유지하고 서버에서 사용자를 인증할 수 있는 JSON 포맷을 사용한 인증수단이다. JWT는 Header, Payload, Signature 세 부분으로 구성되어...
UsernamePasswordAuthenticationFilter에서 인증 처리를 담당한다. AuthenticationManager의 구현체인 ProviderManager는 사용자가 요청한 인증을 처리할 수 있는 Provider로 인증처리를 넘긴다.(UsernamePa
인증과 관련된 이벤트가 발생할 때 리스너를 통해 처리하는 기능을 제공해 컴포넌트 간의 느슨한 결합을 유지하는데 도움을 주는 장점을 가지고 있다. 사용할 때는 @EventListener를 사용한 메소드에 구독을 할 이벤트 객체를 매개변수로 등록한다.응답 헤더에 대한 보안
인증되지 않은 사용자가 로그인 정보 쿠키를 가지고 있다면 자동으로 인증처리를 해주는 기능을 담당하고 이를 통해 Authentication 인터페이스 구현체인 RememberMeAuthenticationToken를 갖게 된다.사용자의 SecurityContext를 가져오
WAS의 경우 새로운 요청이 들어온 경우 큐에 적재되고 쓰레드 풀 내 하나의 쓰레드를 사용하여 처리하게 되는 방식으로 동작하게 된다.동일한 thread에서 실행되는 동안(하나의 요청을 처리하는 동안) 거치는 Controller, Service, Repository, 도
웹요청을 가로챈 후 사용자를 인증하고 인증된 사용자가 적절한 권한을 지니고 있는지 확인하는 과정으로 인증, 인가가 이뤄진다.보안과 관련된 인증과 인가가 이뤄지는 과정이 동작하기 위해 구현된 아키텍처의 핵심 기능으로 웹요청을 수신한 서블릿 컨테이너가 해당 요청을 Dele