Ribbon를 소개하는 이전 포스팅의 마무리에서 Eureka와 함께 사용하면 로드밸런싱이 더 효과적이라고 언급하였다 Eureka란 무엇이고 이를 직접 사용하여 실습을 해보도록하자 1. Eureka란? 서버가 새롭게 시작되면 그것을 감지하여 목록에 자동으로 추가하고, 서버가 종료되면 자동으로 목록에서 삭제하는 기능을 제공하는 라이브러리 Service Registry기능 수행 컴퓨터 네트워크에서 장치 및 서비스를 자동으로 검색(감지)하여 정보를 담고있는 데이터베이스 - Dynamic Service Discovery 클라우드의 전화번호부라고 생각하면 된다(유레카의 경우 유레카 클라이언트들의 정보가 저장) DiscoveryClient Spring-cloud에서 서비스 레지스트리 사용 부분을 추상화한 인터페이스 ..
로드밸런서에 대한 사전지식 쌓기 내가 만든 서비스 사용자가 두명인 경우 서버는 여유롭게 사용자가 원하는 결과를 응답해줄 수 있다 하지만 내가 만든 서비스가 대박나서 동시사용자가 수천만명이 되었을 경우 서버는 터져버리게된다....!!!!! 이러한 문제를 해결하기 위한 두가지 방식 Scale - up : 서버가 더 빠르게 동작하기 위해 하드웨어(cpu 등)의 성능을 올리는 방법 Scale - out : 하나의 서버가 아닌 여러대의 서버를 만들어 일을 나눠 하는 방법 로드밸런싱이란? 하나의 인터넷 서비스가 발생하는 트래픽이 많을 때 여러 대의 서버가 분산처리하여 로드율 증가, 부하량, 속도저하 등을 고려하여 적절히 분산처리하여 해결해주는 서비스 , 즉 스케일 아웃의 방식을 사용한 트래픽 분산처리 서비스 L4 ..
스프링 클라우드가 제공하는 기능 중 Circuilt Breaker라는 기능이 있었다 이 기능은 어떤일을 하며 해당 기능을 제공해주는 Hystrix를 사용하여 실습을 해보는 시간을 가지도록 하자 장애 연쇄란? Supplier 서버에 장애가 생겨 타임아웃이 발생할 경우 Client 서버는 타임아웃이 해결될 때까지 응답이 밀리게된다. Supplier 서버의 응답이 밀리는 동안 Client 서버에도 요청이 계속 싸여 Client 서버까지 장애가 발생하는 것을 장애 연쇄라고 한다. 이러한 장애 연쇄 상황이 발생하지 않도록 circuit breaker를 두어 장애 전파를 막을 수 있다 나는 스프링 클라우드에서 제공하는 넷플릭스 오픈소스인 Hystrix 라이브러리를 사용하기로 하였다 Hystrix의 Circuit B..
마이크로서비스의 개수가 적다면 스프링 클라우드의 필요성을 느끼지 못하겠지만 마이크로서비스의 갯수가 증가함에따라 관리가 복잡해지고 어려워지게된다. 이러한 문제를 해결하기 위해서 spring cloud를 사용하게된다. Spring Cloud란? 분산 시스템에서 공통적인 패턴(구성관리, 서비스 검색, 지능형 라우팅, 마이크로 프록시 등)을 모아 신속하게 구축할 수 있는 도구들을 모아둔 라이브러리를 뜻한다. 웹애플리케이션을 개발하기 위한 도구들을 모아둔 Spring Web처럼 Spring Cloud는 분산 시스템 구축을 쉽게 할 수 있는 도구들을 모아둔 라이브러리라고 생각하면된다. spring cloud가 제공하는 기능목록 다음 게시글에서는 Circuit Breakers에 대하여 알아보도록 하자
IT 동아리 YAPP에서 진행하는 프로젝트에 마이크로소프트 아키텍처를 적용하기 위한 사전 공부에 들어갔다 토크온세미나 1강부터 8강까지의 강의를 듣고 해당내용을 정리 그리고 실습하기로 하였다 먼저 마이크로소프트 아키텍처(=MSA)가 어떻게 탄생하였는지 알기 위해 흔히 많은 개발자가 사용하고 있는 모놀리틱 아키텍처에 대하여 알아보도록 하였다 모놀리틱 아키텍처란? 하나의 서비스 또는 애플리케이션이 하나의 거대한 아키텍처를 가진 구조를 모놀리틱 아키텍처라고한다 즉 애플리케이션은 단일 애플리케이션으로 이루어져있고 또한 하나의 jar(혹은 war)파일로 이루어진 애플리케이션 구조를 뜻한다 모놀리틱 아키텍처의 장점 개발이 단순하다 하나의 레포지토리만을 관리하고 개발하며, 하나의 jar 파일을 배포하면된다 Scale..
Array(배열) - 여러 데이터를 하나의 이름으로 그룹핑해서 관리하기 위한 자료구조 배열의 특징 크기가 정해져 있다 / 기능이 없다 인덱스를 가지고 엘리먼트의 인덱스는 변경되지 않는다 인덱스를 이용한 빠른 조회가 가능하다 데이터에 대한 인덱스 값이 고정적이다 (삭제된 엘리먼트의 공간은 그대로 남아있게된다) 배열의 단점 길이를 바꿀 수 없다 / 초기 선언할 때 꼭 길이를 설정하여야 함 배열에서 엘리먼트를 삭제하면 공간이 그대로 남아 메모리가 낭비된다 기능이 없다 / 추가,삭제,변경 등은 개발자가 직접 구현해야 함 사용예시 //배열의 정의 int []numbers = new int[5] //배열의 값 저장 numbers[0]=10; numbers[1]=23; //배열의 길이 확인 System.out.pri..
모두 자바의 jar 툴을 이용하여 생성된 압축파일이며 어플리케이션을 쉽게 배포하고 동작시킬 수 있도록 관련 파일(리소스, 속성파일)등을 패키징해준다. JAR(Java Archive) Class 와 같은 자바 리소스와 속성 파일, 라이브러리 및 액세서리 파일이 포함되어있다 쉽게 말해 자바 프로젝트를 압축한 파일로 이 파일은 JRE(자바 실행 환경)만으로 실행이 가능하다 WAR(Web Application Archive) servlet / jsp 컨테이너에 배치 할 수 있는 웹 어플리케이션 압축 파일이다 웹 응용프로그램이기 때문에 웹 관련 자원만 포함하고 있으며 이를 사용하면 웹 어플리케이션을 쉽게 배포하고 테스트 할 수 있다 이 파일을 실행하려면 Tomcat, Weblogic, Websphere 등의 웹서..
Web Server Apache, nginx 정적인 콘텐츠 (html, .css, image)를 제공하는 서버 브라우저에서 요청이 들어오면 웹서버가 요청을 보고 정적컨텐츠인지 동적컨텐츠인지 확인 후 동적컨텐츠라면 WAS로 정적컨텐츠라면 웹 서버에서 직접 응답을 한다 WAS가 있는데 Web Server를 앞에 두어 사용하는 이유는 웹 서버에서 정적인 콘텐츠만을 처리하도록 기능을 분배하여 서버의 부담을 줄이거나, 뒤에 애플리케이션을 두어 보안을 강화하거나 Gateway를 위해 사용되기도 한다. CGI(Common GateWay Interface) 사용자의 폼(입력 데이터)와 요청 url에 따라 동적으로 변하는 페이지를 처리하기 위한 인터페이스 서버와 응용프로그램간에 데이터를 주고받기 위한 방법 (웹서버와 w..