-
도커 이미지 만들기IT 서적/도커 교과서 2024. 7. 28. 15:49
1. Dockerfile 작성하기Dockerfile은 일련의 인스트럭션으로 구성돼 있는데, 인스트럭션을 실행한 결과로 도커 이미지가 만들어진다.아래 소스는 예제 3-1 web-ping 애플리케이션을 패키징하기 위한 전체 Dockerfile 스크립트다.FROM diamol/nodeENV TARGET="blog.sixeyed.com"ENV METHOD="HEAD"ENV INTERVAL="3000"WORKDIR /web-pingCOPY app.js .CMD ["node", "/web-ping/app.js"] FROM : 모든 이미지는 다른 이미지로부터 출발한다. 이 이미지는 diamol/node 이미지를 시작점으로 지정했다. diamol/node 이미지에는 web-ping 애플리케이션을 실행하는 데 필요한 런..
-
도커의 기본적인 사용법IT 서적/도커 교과서 2024. 7. 24. 21:51
1. 컨테이너를 원격 컴퓨터처럼 사용하기도커는 컨테이너를 원격 컴퓨터처럼 별도로 사용할 수 있는 기능을 제공한다.터미널에 다음과 같은 명령어를 실행해본다.docker container run --interactive --tty diamol/base--interactive 플래그는 컨테이너에 접속된 상태가 된다.-tty 플래그는 터미널 세션을 통해 컨테이너를 조작하겠다는 의미이다. 2. 명령어 실습docker container ls : 현재 실행 중인 모든 컨테이너에 대한 정보를 볼 수 있다.docker container top f1 : 대상 컨테이너에서 실행 중인 프로세스의 목록을 보여준다. 여기서는 'f1695de1f2ec' 컨테이너를 대상으로 하기 위해 f1까지만 지정했다.docker containe..
-
컨테이너로 Hello World 실행하기IT 서적/도커 교과서 2024. 7. 22. 22:30
1. 도커 파일 및 실습용 파일을 설치한 이후에 맥의 터미널 환경에서 아래 명령어를 실행해본다.docker container run diamol/ch02-hello-diamol이름이 diamol/ch02-hello-diamol인 도커 애플리케이션 패키지를 내려받고 컨테이너로 애플리케이션을 실행해 메시지를 출력한다.docker container run 명령은 컨테이너로 애플리케이션을 실행하라는 도커 명령이다.이 컨테이너 패키지(도커에서는 이를 '이미지'라고 한다.)의 이름은 diamol/ch02-hello-diamol 이다. 그리고 지금 입력한 명령이 이미지를 이용해 컨테이너를 실행하는 도커 명령이다. 2. 위의 과정을 토대로 도커의 워크플로의 핵심을 볼 수 있다.애플리케이션을 컨테이너에서 실행할 수 있..
-
Cold Sequence와 Hot SequenceIT 서적/스프링으로 시작하는 리액티브 프로그래밍 2024. 2. 24. 14:11
Cold Sequence Seuqnece는 Publisher가 emit하는 데이터의 연속적인 흐름을 정의해 놓은 것으로 코드로 표현하면 Operator 체인 형태로 정의됩니다. Cold Sequence는 Subscribe가 구독할 때마다 데이터 흐름이 처음부터 다시 시작되는 Sequence입니다. 즉, Subsriber의 구독 시점이 달라도 구독을 할 때마다 Publisher가 데이터를 emit하는 과정을 처음부터 다시 시작하는 데이터의 흐름을 Cold Sequence라고 부릅니다. public static void main(String[] args) throws InterruptedException { Flux coldFlux = Flux.fromIterable(Arrays.asList("KOREA",..
-
Reactor 개요IT 서적/스프링으로 시작하는 리액티브 프로그래밍 2024. 2. 20. 20:22
Reactor란? 리액티브 스트림즈의 구현체로 리액티브 프로그래밍을 위한 라이브러리이다. 세부 구성요소 Flux: Publisher의 두 가지 타입 중 하나이다. Flux[N]은 N개의 데이터를 emit한다는 것을 의미한다. Mono[0|1]: Mono 역시 Reactor에서 지원하는 Publisher 타입인데, Mono가 데이터를 한 건도 emit하지 않거나 단 한 건만 emit하는 단발성 데이터 emit에 특화된 publisher이기 때문이다. Backpressure-ready network: Reactor는 Publisher로부터 전달받은 데이터를 처리하는 데 있어 과부하가 걸리지 않도록 제어하는 BackPressuer를 지원한다. Flux 예시 소스 @SpringBootApplication pub..
-
리액티브 스트림즈(Reactive Streams)IT 서적/스프링으로 시작하는 리액티브 프로그래밍 2024. 2. 16. 17:10
# 리액티브 스트림즈란? 리액티브 라이브러리를 어떻게 구현할지 정의해 놓은 별도의 표준 사양이 있는데, 이것을 리액티브 스트림즈라고 부른다. 한마디로, 데이터 스트림을 Non-Blocking이면서 비동기적인 방식으로 처리하기 위한 리액티브 라이브러리의 표준 사양이라고 표현할 수 있다. # 리액티브 스트림즈의 컴포넌트인 Publisher와 Subscriber 간에 데이터가 전달되는 동작 과정 그림상으로는 Publisher와 Subscriber가 마치 같은 스레드에서 동기적으로 상호작용하는 것처럼 보이지만 실제로 Publisher와 Subscriber는 각각 다른 스레드에서 비동기적으로 상호작용하는 경우가 대부분이다. Publisher의 속도가 빠르다면 Subscriber에서 데이터를 처리하는 속도가 느려지..
-
리액티브 시스템과 리액티브 프로그래밍IT 서적/스프링으로 시작하는 리액티브 프로그래밍 2024. 2. 16. 16:32
리액티브 시스템이란? 리액티브 시스템이란? 반응을 잘하는 시스템이다. 주요 특징 비동기 메시지 기반의 통신을 주로한다. 시스템의 작업량이 변화하더라도 일정한 응답을 유지한다. 시스템에 장애가 발생하더라도 응답성을 유지한다. 리액티브 프로그래밍이란? 리액티브 프로그래밍은 리액티브 시스템을 구축하는 데 필요한 프로그래밍 모델이다 리액티브 프로그래밍 코드 구성 Publisher 입력으로 들어오는 데이터를 제공하는 역할을 Publisher라고 한다. 발행자, 게시자, 생산자, 방출자 등 여러 가지 용어로 해석된다. Subscriber Publisher가 데이터를 제공하는 역할을 한다면, Subscriber는 Publisher가 제공한 데이터를 전달받아서 사용하는 주체이다. 구독자라고도 불리며 생산자의 의미와 반..
-
ch19 리액티브 앱을 위한 스프링 시큐리티IT 서적/Spring Security In Action 2024. 1. 12. 20:59
# 리액티브 환경에서의 차이점 SecurityContext 구현은 리액티브 애플리케이션에서는 똑같이 작동하지 않는다. SecurityContext는 ThreadLocal에 기반을 두지만 이제 요청당 두 개 이상의 스레드가 사용된다. SecurityContext가 달라졌기 때문에 모든 권한 부여 구성이 영향을 받는다. 권한 부여 규칙은 SecurityContext에 저장된 Authentication에 저장된 Authentication 인스턴스에 의존한다. 따라서 이제 엔드포인트 계층에 적용된 보안 구성과 전역 메서드 보안 기능이 영향을 받는다. 사용자 세부 정보를 검색하는 구성 요소인 UserDetailsService는 하나의 데이터 원본이다. 따라서 사용자 세부 정보 서비스도 리액티브 방식을 지원해야 한..
-
ch17 전역 메서드 보안: 사전 및 사후 필터링IT 서적/Spring Security In Action 2024. 1. 12. 15:51
# 사전 및 사후 필터링의 필요성 메서드 호출은 허용하면서도 메서드로 보내는 매개 변수가 몇 가지 규칙을 따르는지 확인하고 싶을 수 있다. 메서드를 호출한 후 호출자가 반환된 값의 승인된 부분만 받을 수 있게 하려는 시나리오도 있을 수 있다. 이러한 기능을 필터링이라고 하며 두 가지 범주로 분류한다. 사전 필터링 : 프레임워크가 메서드를 호출하기 전에 매개 변수의 값을 필터링한다. 사후 필터 : 프레임워크가 메서드를 호출한 후 반환된 값을 필터링한다. @PreFilter 어노테이션이 지정된 메서드를 가로채고 정의된 기준에 따라 매개 변수로 제공되는 컬렉션의 값을 필터링한다. 아래의 소스를 참고해보자. @Service public class ProductService { @PreFilter("filterO..
-
ch16 전역 메서드 보안 : 사전 및 사후 권한 부여IT 서적/Spring Security In Action 2024. 1. 11. 16:37
# 전역 메서드 보안 활성화 스프링 시큐리티에서는 웹 애플리케이션과 웹이 아닌 애플리케이션의 권한 부여를 구성할 수 있으며 이를 '전역 메서드 보안' 이라고 부른다. 방법은 크게 두 가지가 있다. 호출 권한 부여 필터링 # 호출 권한 부여의 이해 호출 권한 부여 방식은 메서드를 호출할 수 있는지를 결정하거나 메서드를 호출하도록 허용한 후 호출자가 메서드에서 반환된 값에 액세스할 수 있는지를 결정하는 권한 부여 규칙을 적용하는 것을 말한다. 전역 메서드 보안을 활성화하면 스프링 애스펙트 하나가 활성화된다. 이를 그림으로 나타내면 아래와 같다. 스프링 프레임워크의 구현은 상당수가 AOP(관점 지향 프로그래밍)에 의존한다. 전역 메서드 보안은 애스펙트에 의존하는 스프링 애플리케이션의 많은 구성 요소 중 하나다..