전체 글

I work diligently to become lazy.
Kubernetes 는 한 대의 서버를 Master 로 사용하고 다른 서버는 Node 로 하나의 Master 에 다수의 Node 들이 연결 된다. 이렇게 연결 된 하나의 묶음이 Kubernetes Cluster 가 된다.Master 는 Kubernetes 의 전반적인 기능들을 컨트롤 하고, Node 들은 자원을 제공하는 역할을 한다. 만약 Cluster 전체 자원을 늘리고 싶으면 Node 를 계속 추가하면 된다.Namespace 는 Cluster 안에서 Kubernetes 의 Object 들을 독립된 공간으로 분리할 수 있게 해준다. Namespace 에는 Kubernetes 최소 배포 단위인 Pod 들이 있고, 이 Pod 들에게 외부로부터 연결이 가능하도록 IP 를 할당해주는 서비스가 있다. 하지만 서..
VM 과 Container 모두 공통적으로 하나의 서버(Host Server)가 있고 그 서버에는 Host OS 가 올라간다.VM 의 경우 Host OS 위에 VM 을 가상화 하기 위한 여러 Hypervisor 가 있고 그 위에 Guest OS 를 올려 다수의 VM 을 만들 수 있다. 이 Guest OS 역시 Host OS 와 같이 독립적으로 사용해서 각각의 OS 에 애플리케이션을 설치하고 서비스를 만들어 제공할 수 있다.Container 의 경우 Host OS 위에 Container 가상화를 시켜주는 다양한 소프트웨어들이 있는데, 보편적으로 Docker 를 많이 사용 한다.  Docker 를 사용해서 Container 를 만들 수 있다.Linux 마다 버전이 있고, 이 버전에 따라 기본적으로 제공되는 ..
원활한 서비스 제공을 위해 필요한 자원을 미리 준비하는 것은 비용과 관리 측면에서 어려움이 있다.  As-IsA, B, C 각 서비스는 시간대 별로 필요한 자원이 유동적으로 바뀌지만, 서버 자원을 동적으로 변경할 수 없어 최대 부하를 견딜 수 있는 자원을 미리 준비시켜야 한다.각 서비스별 장애 상황에 대비해 최소 하나의 백업 서버가 필요하기 때문에 3대의 서버가 추가로 필요하다.무중단 서비스를 제공하기 위해 운영 배포시 한 번에 한 대씩 서버 작업을 해야 한다. To-BeA, B, C 각 서비스는 auto scaling 기술을 통해 CPU, 메모리, 디스크, 네트워크 트래픽과 같은 시스템 자원들의 메트릭(metric) 값을 모니터링하여 서버 자원을 자동으로 조절한다.장애가 발생한 서버에 있는 서비스들이 ..
이번에는 handler method 에서 사용할 수 있는 다양한 argument 에 대해 정리한다. 여러 포스트로 나누어 정리하지 않고 이번에 자주 사용하는 방법 위주로 이곳에 정리할 예정이다. spring framework document 의 Method Arguments 와 강의 내용을 참고하여 정리했다. 정리 내용 - @PathVariable 과 @MatrixVariable @PathVariable 과 @MatrixVariable PathVariable api 문서를 보면 @RequestMapping annotation 이 붙은 handler method 에서 사용할 수 있는 URI template 변수에 바인딩 되는 parameter 에 사용할 수 있다고 되어 있다. @PathVariable 을 ..
@RequestMapping 으로 HTTP request 에 대한 handler 를 매핑하면 이 handler 를 사용할 때 다양한 매개변수와 반환 값을 유연하게 사용할 수 있다. 다음은 공식 문서를 참고해 작성한 handler method 에서 사용할 수 있는 매개변수들과 반환 값의 목록이다. Controller method argument (handler method argument) : WebRequest : NativeWebRequest : javax.servlet.ServletRequest : javax.servlet.ServletResponse : javax.servlet.http.HttpSession : javax.servlet.http.PushBuilder : java.security.Pr..
이번에 정리 할 내용은 HTTP 요청을 handler method 에 매핑하는 방법이다. 정리에 앞서 본 내용과 무관한 코드를 정리했다. MyHelloController 를 제외한 Person, PersonFormatter, GreetingInterceptor, AnotherInterceptor 를 삭제하고 WebConfig 의 Interceptor, ResourceHandler, Jaxb 설정도 삭제했다. MyHelloControllerTest 클래스의 내용도 모두 삭제 했다. MyHelloController 에 다음과 같이 handler method 를 하나 등록 하였다. package me.nimkoes; import org.springframework.stereotype.Controller; im..
HTTP 메시지 컨버터 (이하 메시지 컨버터) 에 대해 정리한다. 메시지 컨버터 역시 WebMvcConfigurer 를 통해 설정할 수 있다. 우선 메시지 컨버터는 HTTP request body 또는 response body 에 담긴 데이터를 원하는 형태로 변환하여 사용할 수 있는 기능이다. MVC 에서 Controller 역할을 하는 handler method 가 요청 정보를 읽을 때는 @RequestBody annotation 을 사용하고, 응답 정보를 보낼 때는 @ResponseBody annotation 을 사용한다. 앞서 만들었던 MyHelloController 에 HTTP Get 요청을 처리할 수 있는 handler method 를 하나 추가했다. package me.nimkoes; impo..
리소스 핸들러는 HTML, CSS, Javascript, image 등 정적인 자원을 처리해주는 핸들러 이다. 정적 자원을 static resource, 동적 자원을 dynamic resource 라고도 부른다. 이 둘은 HTTP 요청에 따라 응답해주는 자원의 형태가 바뀔 수 있는지에 따라 구분할 수 있다. 웹 애플리케이션을 개발할 때 리소스를 요청하는 쪽을 클라이언트, 제공하는 쪽을 서버라고 한다. 이 때 일반적으로 생각하는 웹 요청을 처리하는 서버는 크게 두가지로 구분할 수 있다. 하나는 웹 서버로 정적인 자원 처리를 전담하고, 다른 하나는 웹 애플리케이션 서버로 동적인 자원 처리를 전담한다. 그럼 정적인 자원과 동적인 자원을 처리하는 서버를 구분하는 이유는 무엇일까. 쉽게 얘기하면 닭잡는 칼로 소를..
nimkoes
한칸짜리책상서랍