일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 헬름
- 클라우드 네이티브
- Kotlin
- Semaphore
- cloud native
- 마이크로서비스
- 익명클래스
- Spring
- spring microservice
- CRD
- Stress test
- Adapter 패턴
- 쿠버네티스
- cloud native java
- MSA
- Algorithm
- devops
- decorator 패턴
- kubernetes
- ingress
- java
- 코틀린
- 자바
- 머신러닝
- nGrinder
- MySQL
- Microservice
- ansible
- 클라우드 네이티브 자바
- 동기화
- Today
- Total
목록Spring (9)
카샤의 만개시기
HttpClient는 HTTP를 사용하여 통신하는 범용 라이브러리이고, RestTemplate은 HttpClient 를 추상화(HttpEntity의 json, xml 등)해서 제공해준다. 따라서 내부 통신(HTTP 커넥션)에 있어서는 Apache HttpComponents 를 사용한다. 작동원리 어플리케이션이 RestTemplate를 생성하고, URI, HTTP메소드 등의 헤더를 담아 요청한다. RestTemplate 는 HttpMessageConverter 를 사용하여 requestEntity 를 요청메세지로 변환한다. RestTemplate 는 ClientHttpRequestFactory 로 부터 ClientHttpRequest 를 가져와서 요청을 보낸다. ClientHttpRequest 는 요청메세..
AOP는 관점지향 프로그래밍(Aspect Oriented Programming)으로써, 공통 기능(로깅, 트랜잭션, 접근 제어 등의 보안) 등에 대한 횡단 영역의 공통된 부분의 중복을 제거하고 모듈화 하는 프로그래밍 방식이다. Aspect 공통으로 적용되는 기능 Advice 언제 Aspect을 로직에 적용할 지를 정의. @Before 메소드 실행 전 기능 수행. @After 메소드 결과와 상관없이 메소드가 완료 된 이후에 기능 수행. @AfterReturning 메소드가 성공적으로 완료 된 이후에 기능 수행. @AfterThrowing 메소드 수행 중 예외 발생 시 이후에 기능 수행. @Around 메소드가 실행되기 전과 후 기능 구행. proceed() 메소드 호출 전, 후를 통해 구분할 수 있다. J..
MSA를 포함하는 분산 환경에서의 서비스 호출은 IP주소와 포트를 이용하여 이루어지는데, 클라우드 환경이 되면서 오토 스케일링을 통해 동적으로 서비스가 돌아가면서 IP나 포트 역시 동적으로 변경되는 일이 흔하게 되었습니다. 그래서 서비스 클라이언트는 서비스를 호출할때 서비스의 위치(IP, Port)를 조회 할 필요성을 느끼게 되었는데 이를 서비스 디스커버리(Service Discovery)라고 합니다. 서비스 디스커버리는 기본적으로 서비스를 등록하고 등록된 서비스의 목록을 리턴하는 기능이지만 서비스의 Health check를 통하여 어떤 서비스 인스턴스가 살아있는지, 서비스간의 로드밸런스, 서버 목록에서의 Master/Slave 정보 리턴, 서버에 접속하기 위한 인증키 정보 리턴, 보안과 암호화와 같은 ..
좋은 REST API는 GET, PUT, POST, DELETE 등과 같은 동사와 HTTP 헤더, 상태 코드 등 HTTP의 기능을 최대한 올바르게 활용하는 것을 말합니다. REST는 어떤 기술 표준이 아닌 HTTP에 대한 일종의 아키텍처 제약사항이며 레너드 리차드슨 (Leonard Richardson)은 REST 성숙도 모델을 통해 API의 REST 원칙 준수 등급을 정의하였습니다. LEVEL 0. POX(Plain Old XML)의 늪 REST를 도입하기 전 상태를 말합니다. 모든 전송과 응답을 POST로 하며 접근 가능한 엔드 포인트는 하나이며 HTTP의 body에 정보를 넣어 전송하는 기존의 리소스 전송 방식을 사용합니다. LEVEL 1. 자원 고유의 URI로 각각의 제공하는 자원을 주고 받습니다...
트랜잭션은 모든 작업이 성공한 경우에만 작업이 커밋되어 데이터베이스에 반영되고 하나의 작업이라도 도중에 실패하면 모든 작업을 롤백하는 'all or nothing'의 조건을 만족해야 합니다. 데이터베이스가 N대의 샤드로 구성된 웹 서비스 환경에서는 분산 트랜잭션을 이용하여 이를 만족할수 있습니다. 분산 트랜잭션 분산 트랜잭션(distributed transaction)은 2개 이상의 네트워크 시스템 간의 트랜잭션입니다. 일반적으로 시스템은 트랜잭션 리소스의 역할을 하고, 트랜잭션 매니저는 이러한 리소스에 관련된 모든 동작에 대해 트랜잭션의 생성 및 관리를 담당합니다. 분산 트랜잭션은 다른 트랜잭션처럼 4가지 ACID(원자성, 일관성, 고립성, 지속성) 속성을 갖추어야 하며 여기에서 원자성은..
HTTP는 기본적으로 Connectionless하고 Stateless한 프로토콜이지만 로그인 상태 유지 등을 위한 목적으로 Session 혹은 Cookie를 이용하여 Stateful하게 사용합니다. 그런데 하나의 WAS에서 Session을 이용하여 서비스를 제공하는 서버에서 사용자가 증가해 서버를 증설하게 되었을때 각 WAS는 개별적으로 세션을 관리하기 때문에 세션이 공유 되지 않습니다. 이는 로드벨런서를 통해 로그인 요청이 1번 WAS에 들어와 로그인 처리를 하였지만 권한이 필요한 다른 요청이 2번 WAS에 들어왔을때 해당 WAS의 세션에는 권한이 인가되어 있지 않아 올바르지 않게 작동한다는 것을 의미합니다. 이 문제를 해결하기 위해서는 두 서버간 세션이 공유되어야 하고 이를 세션 클러스터링이라 합니다..
우리는 '12요소 방법론'을 배우면서 환경에 따라 DB나 스토리지 등 설정 정보들이 달라질수 있기 때문에 어플리케이션 구동 시에 설정 정보들이 주입될 수 있도록 해야한다고 배웠습니다. 이를 위해서 Spring Cloud Config를 이용하여 프로젝트를 구현해보도록 하겠습니다. Spring cloud config는 분산 시스템에서 설정파일을 외부로 분리하는 것을 지원하기 때문에 외부 속성을 중앙에서 관리할 수 있으며 어플리케이션의 재배포 없이 적용이 가능합니다. 준비 Spring cloud config를 테스트해보기 위해서는 3개의 Git Repository가 필요합니다. Config Properties Files Spring Cloud Config Server Spring Cloud Config Cli..
12요소 방법론이란 허로쿠(Heroku) 클라우드 플랫폼을 만든 창시자들이 정립한 방법론으로써 어플리케이션을 만들때 필요한 여러가지 근본적인 핵심 사상을 정리한것입니다. 그렇다면 12요소 어플리케이션의 실천법에 대하여 알아보도록 하겠습니다. 1. 코드베이스 (Codebase) 어플리케이션은 git과 같은 버전 관리 시스템을 통하여 형상관리 되어야하며 코드와 App은 1:1로 매핑되어 동일한 코드를 여러 App이 공유하지 않도록 해야합니다. 공유가 필요한 부분은 모듈화하여 공유하여야 합니다. 하나의 코드베이스는 복수의 환경으로 배포가 가능해야 합니다. 2. 의존관계 (Deoendencies) 의존관계는 패키지 매니저 툴(Java의 경우 Gradle이나 Maven)을 이용하여 명시적으로 표시하고 격리하여야 ..