Spring에서 MSA를 사용하는 경우 서버는 고가용성을 가질 필요가 있고, 하나의 서버가 터졌을 때 다른 서비스까지 되지 않는 로직은 사이트의 규모가 커질수록 경제적 손해가 큽니다. Netflix에서 개발된 서비스 디스커버리 툴이 공개되고 나서 Eureka는 다음과 같은 장점을 가집니다. 1. 서비스 디스커버리 - 수십, 수백개의 서버의 url을 모두 외워서 적용시키는 것은 개발적 loss가 큽니다. 따라서 서버이름을 통해 lb:severname을 통해 맵핑을 시킨다면 해당 서버의 위치를 조회할 수 있습니다. 2. 로드 벨런싱 - eureka서버는 상태를 주기적으로 체크합니다. 응답하지 않는 서비스에 있어서 장애 서비스에 요청을 보내는 것을 방지할 수 있습니다. 3. 자동 장애 복구 - 서비스가 장애 ..
git에서 license 들어보셨나요? git에서 참고를 했다면 해당되는 license를 확인해서 등록을 해주어야 합니다. license의 종류에는 MIT, BSD, GNL, GNUL등이 있습니다. 해당 규정마다 허가되는 권한이 다르기 때문에 이것을 지켜주셔야 합니다. 이것을 지키지 않았을 때 일부 회사에서 배상을 하게 되는 뉴스를 확인할수 있습니다. 그래서 꼭! 지켜주셔야 해요. license를 등록하지 않아서 많은 비용을 부담하게 되거나, license 등록 이유는 다음과 같습니다. 코드 사용의 권한을 명확히 하고 오픈소스에 대한 신뢰를 주는 수단 사용, 복제, 수정, 배포 등의 행위에 대한 규칙을 명시 개발자는 저작권을 지킬 수 있고, 다른 개발자가 사용 및 수정하는 것을 허용도 가능 issue를 ..
List list = new ArrayList(); 라고 쓸까? 인스턴스 타입을 클래스 대신 인터페이스로 초기화 할까? 인터페이스를 구체클래스의 위에 타입으로 덧씌우는 것은 캡슐화와 낮은 결합도의 핵심이다. 나중에 테스트코드를 작성하기도 쉬워지고 변경사항이 생겨도 변화에 쉽게 대응 할 수 있기 때문이다. List list = new ArrayList(); 이렇게 정의되어 있는 것을 Stack으로 변경할 때 List list = new Stack(); 클래스로 바꿔준다. 이렇게 될 경우 ArrayList, Stack 모두 List를 구현한 구체클래스여서 Counter.sizeOf(list) 같은 코드가 밑에 있더라도 변경하지 않을 수 있다. 즉 결합도를 낮추고 의존성을 분리한 것. 한 코드의 변화가 다른 ..
서블릿이란? 더보기 서블릿이란 동적 웹 페이지를 만들 때 사용되는(클라이언트의 요청을 처리하고 결과를 반환하는) 자바 기반의 웹 애플리케이션 프로그래밍 기술이다. 서블릿은 웹 요청과 응답의 흐름을 간단한 메서드 호출만으로 체계적으로 다룰 수 있게 해준다.(순수 자바를 이용하여 웹을 만들 때 사용한다) 서블릿은 서버에서 실행되다가 웹 브라우저에서 요청을 하면 해당 기능을 수행한 후 웹 브라우저에 결과를 전송한다. JSP와 차이점으로는 JSP는 HTML 문서 안에 Java코드를 포함하는 반면, 서블릿은 Java코드 안에 HTML을 포함하고 있다. 특징 Spring boot를 사용하지 않을 때, MVC 패턴에서 Controller의 역할으로 이용된다. Java Thread를 이용하여 동작한다. HTTP프로토콜..