전체 글 468

[완독정리]스프링 마이크로서비스 코딩 공작소 8.메시지와 EDA, 마이크로서비스의 사례-길벗

마이크로서비스에서의 캐싱 - 캐싱된 데이터는 서비스의 모든 인스턴스에 일관성이 있어야 한다. - 컨테이너 메모리에 조직데이터를 캐싱해서는 안된다. 서비스를 호스팅하는 런타임 컨테이너는 종종 크기 제약이 있으며 다양한 엑세스 패턴으로 데이터를 엑세스한다. - 업데이트나 삭제 연산으로 레코드가 변경될 때 서비스는 상태 변화를 인식해야 한다. 동기식 요청-응답 방식으로 상태 변화 전달의 특징 - 서비스간 강한 결합 - 쉽게 깨지는 서비스 관계 - 조직 서비스 변경에 관심있는 새 소비자를 추가할 때 경직성 메시징을 사용해 서비스 간 상태 변화 전달의 특징 - 메시징 방식을 사용하면 서비스 사이에 큐를 삽입한다. 데이터의 상태가 변할때 메시지를 발행하여 변경사항을 전달한다. - 느슨한 결합 - 내구성 - 확장성 ..

Programming/MSA 2021.03.06

[완독정리]스프링 마이크로서비스 코딩 공작소 7.마이크로서비스의 보안-길벗

OAuth2 소개 토큰기반의 보안 인증과 인가 프레임워크로 다음 4개의 컴포넌트로 구성된다. 1. 보호자원 : 보호하려는 자원이며 적절한 권한을 부여받은 인증된 사용자만 엑세스 할 수 있다. 2. 자원 소유자 : 서비스를 호출할 수 있는 애플리케이션 및 서비스에 접근 할 수 있는 사용자 그리고 서비스에서 수행할 수 있는 작업을 정의한다. 3. 애플리케이션 : 사용자를 대신해 서비스를 호출할 애플리케이션이다. 4. OAuth2 인증 서버 : 애플리케이션과 소비되는 서비스 사이의 중계자다. 토큰 생성 엔드포인트에 전달되는 모든 매개변수가 HTTP양식 매개변수라고 기대한다. 매개변수로 다음 서비스 정보를 전달해야 한다. 그랜트타입 : 실행할 OAuth2그랜트 타입이다. 스코프 : 애플리케이션을 위한 범위로 애..

Programming/MSA 2021.03.06

[완독정리]스프링 마이크로서비스 코딩 공작소 5.나쁜 상황에 대비한 스프링 클라우드와 넷플릭스 히스트릭스의 클라이언트 회복성 패턴-길벗

서비스 소비자와 서비스 사이에서 완충 역할을 하는 네가지 클라이언트 회복성 패턴 클라이언트 측 부하분산 - 넷플릭스 유레카 같은 서비스 디스커버리 에이전트를 이용해 서비스의 모든 인스턴스를 검색한 후 해당 서비스 인스턴스의 실제 위치를 캐싱하는것 회로차단기 - 회로차단기는 원격 자원에 대한 모든 호출을 모니터링하고 호출이 필요한 만큼 실패하면 회로 차단기가 활성화되어 빨리 실패하게 만들며 고장난 원격 자원은 더이상 호출되지 않도록 차단한다. 폴백처리 - 실패할때 예외를 발생시키지 않고 서비스 소비자가 대체 코드 경로를 실행해 다른 방법으로 작업을 수행할 수 있다. 벌크헤드 - 각 원격자원에 대한 호출을 자원별 스레드 풀로 분리하므로 특정 원격 자원의 호출이 느려져 전체 애플리케이션이 다운될 수 잇는 위험..

Programming/MSA 2021.03.04

[완독정리] 자바웹을 다루는 기술 5(스프링부트)- 길벗

스프링부트 스프링 프레임워크보다 의존성 관리가 용이할 뿐만아니라 배포 또는 테스트 역시 스프링 프레임워크보다 쉽고 빠르게 할 수 있습니다. 스프링부트로 개발하면 메이븐의 라이브러리 자동 업데이트 기능을 이어받을 수 있을 뿐만아니라 기존 스프링 프레임워크의 복잡한 설정 과정을 최대한 줄일 수 있어 편리합니다. - 일반적인 응용 프로그램을 단독으로 실행하는 수준으로 스프링 애플리케이션을 구현할 수 있습니다. - 프로젝트 환경을 구축할때 필요한 톰캣, jerry, UnderFlow 같은 서버 외적인 툴이 내장되어 있어 따로 설치할 필요가 없습니다. - XML 기반 설정이나 코드없이 환경설정을 자동화할 수 있습니다. - 의존성 관리를 쉽게 자동으로 할 수 있습니다. 구성요소 역할 application.prope..

Programming/Java 2021.02.15

[완독정리] 자바웹을 다루는 기술 4(스프링최종)- 길벗

스프링 애너테이션? DI나 AOP 같은 기능은 따로 XML파일로 설정한 후 애플리케이션에서 사용했습니다. 그러나 애플리케이션의 기능이 복잡해짐에 따라 XML설정파일의 내용도 복잡해졌고 관리에도 문제가 생기기 시작했습니다. 따라서 XML에서 설정하는 방법과 애너테이션 기능을 사용하는 방법 두가지를 혼합해서 사용하고 있습니다. 태그 태그를 사용해 패키지 이름을 지정하면 애플리케이션 실행시 해당 패키지에서 애너테이션으로 지정된 클래스를 빈으로 만들어 줍니다. 애너테이션 기능 @Controller 스프링 컨테이너가 component-scan에 의해 지정한 클래스를 컨트롤러 빈으로 자동 변환 @Service // 서비스빈으로 자동변환 @Repository // DAO빈으로 자동변환 @Component // 빈으로..

Programming/Java 2021.02.10

[완독정리] 자바웹을 다루는 기술 3(스프링, 마이바티스)- 길벗

마이바티스란? 기존 JDBC로 개발할 경우 반복적으로 구현해야 할 SQL문도 많을 뿐만 아니라 SQL문도 복잡합니다. 기존의 JDBC의 경우 다음 과정을 거쳐야 했습니다. connection → Statement 객체 생성 → SQL문 전송 → 결과반환 → close 이 방식의 단점은 SQL문이 프로그래밍 코드에 섞여 코드를 복잡하게 만든다는 것입니다. 이를 개선해 가독성을 높여 사용하기 편하게 만든 것이 바로 마이바티스 프레임워크 입니다. - SQL실행결과를 자바 빈즈 또는 Map객체에 매핑해주는 Persistence 솔루션으로 관리합니다. 즉 SQL을 소스코드가 아닌 XML로 분리합니다. - SQL문과 프로그래밍 코드를 분리해서 구현합니다. - 데이터소스 기능과 트랜잭션 처리 기능을 제공합니다. 마이..

Programming/Java 2021.02.09

[완독정리] 자바웹을 다루는 기술 1- 길벗

서블릿이란 : 서블릿은 서버 쪽에서 실행되면서 클라이언트의 요청에 따라 동적으로 서비스를 제공하는 자바클래스입니다. - 서버쪽에서 실행되면서 기능을 수행합니다. - 기존의 정적인 웹 프로그램의 문제점을 보완하여 동적인 여러가지 기능을 제공합니다. - 스레드 방식으로 실행됩니다. - 자바로 만들어져 자바의의 특징을 가집니다. - 컨테이너에서 실행됩니다. - 컨테이너 종류에 상관없이 실행됩니다.(플랫폼 독립적) - 보안기능을 적용하기 쉽습니다. - 웹 브라우저에서 요청시 기능을 수행합니다. MIME-TYPE : 서버에서 웹 브라우저로 데이터를 전송할 때는 어떤 종류의 데이터를 전송하는지 웹 브라우저에 알려줘야 합니다. 그 이유는 웹 브라우저가 전송 받을 데이터의 종류를 미리 알고 있으면 더 빠르게 처리할 수..

Programming/Java 2021.02.09

[완독정리] 자바웹을 다루는 기술 2(스프링)- 길벗

의존성 주입하기 서로 관련이 있는 기능들은 강하게 결합하고 관련이 없는 기능들은 약하게 결합해야 좋은 프로그램입니다. 스프링 프레임워크에서는 각 클래스들의 연관관계를 클래스들 사이에서 맺는 것이 아니라 스프링 프레임워크에서 설정을 통해 맺어줌으로써 클래스들이 연관 관계를 갖지 않게 구현했습니다. 스프링에서 의존성을 주입하려면 XML이나 애너테이션을 이용해 객체를 주입하여 객체들의 의존관계를 맺어주면 됩니다. MVC - 모델2 아키텍처를 지원합니다. - 스프링과 다른 모듈과의 연계가 쉽습니다. - 타일즈나 사이트메시 같은 View 기술과의 연계가 쉽습니다. - 태그 라이브러리를 통해 message출력, theme 적용 그리고 입력 폼을 보다 쉽게 구현할 수 있습 MVC 구현 요소 DispatcherServ..

Programming/Java 2021.02.09