Backend 39

GC(Garbage Collection)

Garbage Collection이란? => Head영역의 메모리에 unrechable한 object들을 Garbage Collector가 메모리에서 제거시키는 것. (Heap 영역의 오브젝트 중 stack 에서 도달 불가능한 (Unreachable) 오브젝트들은 가비지 컬렉션의 대상이 된다.) C나 C++같은 경우는 OS레벨의 메모리에 직접 접근하여 명시적으로 해제해줄 수 있다. 그러나, 자바에서는 OS의 메모리 영역에 직접 접근하지 않고 JVM이라는 가상머신을 이용해서 간접적으로 접근한다. (JVM은 C로 만들어서 free를 호출한다고 한다) 예를 들어보자. String url = “https://”; url += “yaboong.github.io”; 위와 같이 문자열 더하기 연산에서 문자열이 합쳐지..

Backend/Java 2021.04.17

SLF4J

로깅 Facade(퍼사드)이다. 로깅에 대해 추상 레이어를 제공하는 interface모음이다. 여러 로깅 라이브러리를 통일된 방법으로 쓸 수 있도록 해준다. 3가지 모듈을 제공해준다. 1. SLF4J API 2. SLF4J Binding 3. SLF4J Bridging Log4j: 예전에 많이 썼던 로깅 프레임워크 Logback: Log4j의 후속버전으로 최근에 가장 많이 사용하는 로깅 프레임워크이다. 로그레벨 1. FATAL 2. ERROR 3. WARN 4. INFO 5. DEBUG 6. TRACE pangtrue.tistory.com/166 [Java] SLF4J 라이브러리 - 추상 Logging Framework SLF4J 라이브러리 - 추상 Logging Framework SLF4J는 추상화된 ..

Backend/Log 2021.04.16

Spring AOP

AOP(Aspect Oriented Programming): 관점 지향 프로그래밍. 어떤 로직을 핵심적인 관점, 부가적인 관점으로 나눠서 그 관점에 따라 각각 모듈화하겠다는 것 보통 부가적인 관점으로 분류할 수 있는 것들은 DB연결, 로깅, 파일 입출력 등이 있다. 그런 것들을 매 클래스마다 적용할 수 없으니(흩어진 관심사) 비지니스 로직에서 분리하여 모듈로 재사용하겠다라는 것이 AOP의 취지 AOP 주요 개념 Aspect, Target, Advice, Joint Point, Point Cut AOP 특징 .프록시 패턴 기반의 AOP 구현체, 프록시 객체를 쓰는 이유는 접근 제어 및 부가기능을 추가하기 위해서 .스프링빈에만 적용 가능 .스프링IoC와 연동하여 엔터프라이즈 애플리케이션에서 가장 흔한 문제(..

Backend/Spring AOP 2021.04.14

Feign

Netflix에서 만든 선언적 http client. 선언적이란 말은 어노테이션 선언만으로 트랜잭션을 적용하게 하는 기술 Feign의 선언적 http 클라이언트 역시 어노테이션만으로 http클라이언트를 만들 수 있고 이를 통해 http api 호출이 가능하다. 보통 hytrix와 같이 사용한다. Feign client: feign client는 web service 클라이언트를 보다 쉽게 작성할 수 있도록 해준다. 서버에 있는 api를 호출할 수 있는 역할을 한다. Client interface를 만들어서 @FeignClient 를 붙이고 name에 해당하는 서비스를 찾아 실행한다. 설정이 중요하다.

Eureka

마이크로서비스의 동적인 탐색과 로드밸런싱을 제공한다. 로드밸런싱을 위해 내부적으로 Ribbon을 사용한다. Netflix OSS(Open Source Software)의 여러가지 컴포넌트 중 하나 등록된 모든 서비스들의 정보(hostname, ip, port 등)가 레지스트리로 관리되고 접근정보를 요청하는 Eureka Client 서비스들에게 목록을 제공한다. 크게 Eureka Sever, Eureka Client로 나눠져 있다. Eureka Server : 서비스들의 정보를 저장하느느 곳, 각 client로부터 30초(default)마다 heartbeat를 받게 된다. Eureka Client : 각 서비스들, 자신을 Eureka Server에 등록. 서비스들의 위치 정보를 Eureka Server로부..

Zuul

모든 마이크로서비스에 대해 요청을 먼저 받아들이고 라우팅하는 프록시 API Gateway 기능을 수행한다. API Gateway ? 서버 앞단에서 모든 엔드포인트를 단일화 해주는 또 다른 서버의 역할을 해준다. 1. 인증/인가 서비스는 서비스 호출에 있어 매우 중요하다. 관리자와 사용자가 분리되어 있는 웹 서비스에서 호출이 이러한 호출이 자유롭지 못하면 문제가 있다. 모놀리틱 아키텍처에서는 보안처리를 Dependency를 사용해서 처리했지만 서비스가 분리되어있는 상태에서는 소스 중복이 심해지고 유지보수가 힘들어진다. 이러한 것을 API Gateway를 이용해서 해결할 수 있다. 2. 라우팅과 로드밸런싱 대용량 처리 서비스에 있어 가장 필수인 로드밸런싱을 제공한다. 요청이 많은 서비스에 대해서만 로드 밸런..