본문 바로가기

Study59

[Logging] Logback이란? 블로그를 작성하고, 테코톡을 진행했어요. 더 쉽게 이해하고 싶다면 아래 영상을 시청해주세요! [10분 테코톡] ☂️ 검프의 Logging(로깅) #2 Logback 로깅 프레임워크 중 하나로, SLF4J의 구현체에요. SLF4J에 관한 설명은 앞선 포스팅으로 대신할게요. [Logging] SLF4J란? Logback 구조 Logback은 아래 3가지 모듈로 나뉘어요 logback-core logback-classic logback-access logback-core: 다른 두 모듈을 위한 기반 역할을 하는 모듈이에요. Appender와 Layout 인터페이스가 이 모듈에 속해요. logback-classic: logback-core에서 확장된 모듈로, logback-core와 SLF4J API 라이브러리.. 2021. 7. 14.
[Logging] SLF4J란? 블로그를 작성하고, 테코톡을 진행했어요. 더 쉽게 이해하고 싶다면 아래 영상을 시청해주세요! [10분 테코톡] ☂️ 검프의 Logging(로깅) #1 SLF4J(Simple Logging Facade for Java)는 이름에서 확인할 수 있듯이. java.util.logging, logback 및 log4j와 같은 다양한 로깅 프레임 워크에 대한 추상화(인터페이스) 역할을 하는 라이브러리에요. SLF4J는 추상 로깅 프레임워크이기 때문에 단독으로는 사용하지 않아요. 즉, 최종 사용자가 배포시 원하는 로깅 프레임워크를 결정하고 사용해도 SLF4J가 인터페이스화 되어있기에, SLF4J를 의존하는 클라이언트 코드에서는 실제 구현을 몰라도 돼요(의존관계 역전 법칙). SLF4J 동작과정 SLF4J은 간략히 아.. 2021. 7. 10.
[Docker] 도커란? 도커(Docker)? 컨테이너 기반 가상화 도구예요. 일반적으로 도커라 하면 도커 엔진, 또는 도커에 관련된 모든 프로젝트를 의미해요. 보통 도커 엔진이라는 의미로 많이 사용되는데, 도커 엔진은 컨테이너를 생성하고 관리하는 주체로서 이 자체로도 컨테이너를 제어하고, 다양한 기능을 제공하는 도커의 주 프로젝트이기 때문이에요. 여기서 컨테이너란 말이 어려워요. 컨테이너(Container) 사전적 의미로 컨테이너는 어떤 물체를 격리하는 공간을 뜻해요. 하지만 개발적 의미로는 이미지의 목적에 맞는 파일이 들어있는 파일시스템과 격리된 시스템 자원 및 네트워크를 사용할 수있 는 독립된 가상공간이라고 해요. 즉, 이미지의 목적에 따라 생성되는 프로세스 단위의 격리 환경이에요. 호스트 입장에서는 격리된 환경을 가진 프.. 2021. 6. 29.
[Spring] 스프링 Interceptor의 동작 과정 Handler Interceptor 전반적인 클라이언트 요청흐름 그림에서 확인해보면, Spring Container내에서 Handler Mapping(수행할 handler 결정) 이후 HandlerAdaptor(결정된 핸들러 수행) 전/후 과정에서 수행됨을 확인할 수 있어요. 주 사용 목적은 핸들러(컨트롤러)의 수정없이 핸들러 수행 전/후처리 동작을 추가하여 핸들러(컨트롤러)의 반복적인 코드를 제거하기 위함이에요. 쉽게 말해, HandlerMapping이 결정한 handler을 HandlerAdapter 수행 전, 후로 가로체어 추가적인 작업이 가능해요. 또한 View 렌더링 이후 클라이언트에게 Response를 전달하기 전에 추가적인 작업이 가능해요. 어디에 사용될까? 가만보니, Filter와 매우 유.. 2021. 6. 22.
[Spring]서블릿 Filter를 사용해보자 스프링 mvc의 전반적인 요청과정은 이전에 정리했어요 [Spring] 쓰레드 관점에서 본 Spring MVC HTTP 요청과정 Servlet Filter 요청을 받은 WAS가 Servlet Container에게 Request, Response를 던져주면, 이를 먼저 Filter에서 받아. Request에 대한 필터링를 진행하고, 서블릿에게 ServletRequest, ServletResponse를 건네요. 요청에 대한 작업이 끝난 후 Response에 대한 필터링를 진행해요. 쉽게말해, 요청과 응답에 대한 필터링을 진행해요. 동작과정 import javax.servlet.*; import java.io.IOException; public class GumpFilter implements Filter { .. 2021. 6. 18.
[Spring] 쓰레드 관점에서 본 Spring MVC HTTP 요청과정 우선 스프링 MVC의 요청과정을 큰 그림으로 보기로 해요. 큰 흐름으로, 클라이언트가 HTTP 요청을 보내면, WAS는 TCP/IP 연결 대기 과정(welcome 소켓)에서 클라이언트를 위한 소캣(연결 소켓)을 생성해서 연결해요. 연결 이후 많은 과정이 일어나요. (다음 과정으로 간다는 것은, 반환되지 않았다는 얘기에요) WAS는 HTTP 메시지를 파싱해서, Web Server에서만 필요한 정보면, 정적 페이지를 반환해요. Request, Response 객체를 만들어 Filter 객체에 던져줘요. Filter에서 요청된 내용을 변경(인코딩 변환 처리)하거나, 여러가지 체크(XSS 방어)를 해요. 여기서 체크에 걸린다면, 예외를 반환해요. WAS에서 HttpServletRequest, HttpServle.. 2021. 6. 7.
[Network] TCP 연결과정에 대해 알아보자 전반적인 흐름은 이전에 정리했어요. [Network] OSI 7계층이란? [Network] http의 특징과 각각에 대해 간략히 설명해 주세요 TCP는 TCP/IP 모델의 3계층인 트랜스포트 계층의 프로토콜이에요. Port번호를 사용하여 도착지 컴퓨터의 최종 도착지인 프로세스에 까지 데이터가 도달하게 하는 모듈(함수)에요. 데이터를 세그먼트(Segment, 출발지, 목적지 PORT, 전송 제어, 순서 검증 정보)로 감싸요 데이터 전달 보증, 순서를 보장 할 수 있는 이유는 3Way handshake과정이 있기 때문이에요. 애플리케이션 계층과 트랜스포트 계층 사이에는 소켓이라는 것이 존재해요. 소켓은 네트워크(트랜스포트 게층)에서 프로세스(애플리케이션)로 데이터를 전달하며, 프로세스로부터 네트워크로 데이터.. 2021. 6. 3.
[SpringBoot] Local-Memory 캐시를 사용해보자 @Service public class PathService { private static final Logger logger = LoggerFactory.getLogger(PathService.class); private final LineService lineService; private final StationService stationService; private final PathFinder pathFinder; ... @Transactional(readOnly = true) public PathResponse findPath(Long departure, Long arrival, LoginMember loginMember) { try { logger.info("캐시 되에에엠~"); List li.. 2021. 5. 31.
[Network] OSI 7계층이란? OSI(Open Systems Interconnection Reference Model) 7계층은 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것을 말해요. 계층이 나눠진 이유는? 통신이 일어나는 과정을 단계적으로 파악하기 위함이에요. 또한, 7단계 중 특정한 곳의 에러가 다른 단계로 번지지 않게 하기 위함이에요. 얼마나 중요한가? 최근에는 TCP/IP Model이 시장 점유에서 이겨, 그 중요성이 떨어지고 있어요. 하지만 이론적인 가치가 충분히 있고, 새로운 model이 나오더라도, OSI 7 Layer과 대비할 수 있기 때문에 여전히 중요해요. TCP/IP 모델의 과정은 이전 포스트에서 다뤘어요. 1. 물리(Physical) 계층 네트워크 노드 간의 물리적 케이블 또는 무선 연결을 담당해요 en.. 2021. 5. 24.