Study 60

[DB] NoSql이 무엇인지, 기존 RDBMS와의 차별점은 무엇인지 설명해주세요

이번 포스트는 SQL vs. NoSQL Databases: What’s the Difference? 을 번역하며 정리한 것이에요. NoSql 데이터베이스(비관계형 데이터베이스)는 관계형 데이터베이스와 방식은 다르지만 관계 데이터를 저장할 수 있어요. Not Only SQL, 기존의 관계형 DBMS가 갖고있는 특성 뿐만 아니라 다른 특성들을 부가적으로 지원한다는 것을 의미해요. 데이터베이스는 크게 SQL과 NoSQL, 관계형 데이터베이스와 비관계형 데이터 베이스로 나뉘어요. 둘의 차이점은 구축 방법, 저장 정보 유형 및 저장 정보에 따라 달라져요. 관계형 데이터베이스는 전화번호와 주소를 저장하는 전화번호부와 같이 구조화 되어있어요. 비관계형 데이터베이스는 사람의 주소와 전화번호부터 Facebook 좋아요 ..

Study/SQL 2021.08.02

[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 라이브러리..

Study/Logging 2021.07.14

[Logging] SLF4J란?

블로그를 작성하고, 테코톡을 진행했어요. 더 쉽게 이해하고 싶다면 아래 영상을 시청해주세요! [10분 테코톡] ☂️ 검프의 Logging(로깅) #1 SLF4J(Simple Logging Facade for Java)는 이름에서 확인할 수 있듯이. java.util.logging, logback 및 log4j와 같은 다양한 로깅 프레임 워크에 대한 추상화(인터페이스) 역할을 하는 라이브러리에요. SLF4J는 추상 로깅 프레임워크이기 때문에 단독으로는 사용하지 않아요. 즉, 최종 사용자가 배포시 원하는 로깅 프레임워크를 결정하고 사용해도 SLF4J가 인터페이스화 되어있기에, SLF4J를 의존하는 클라이언트 코드에서는 실제 구현을 몰라도 돼요(의존관계 역전 법칙). SLF4J 동작과정 SLF4J은 간략히 아..

Study/Logging 2021.07.10

[Docker] 도커란?

도커(Docker)? 컨테이너 기반 가상화 도구예요. 일반적으로 도커라 하면 도커 엔진, 또는 도커에 관련된 모든 프로젝트를 의미해요. 보통 도커 엔진이라는 의미로 많이 사용되는데, 도커 엔진은 컨테이너를 생성하고 관리하는 주체로서 이 자체로도 컨테이너를 제어하고, 다양한 기능을 제공하는 도커의 주 프로젝트이기 때문이에요. 여기서 컨테이너란 말이 어려워요. 컨테이너(Container) 사전적 의미로 컨테이너는 어떤 물체를 격리하는 공간을 뜻해요. 하지만 개발적 의미로는 이미지의 목적에 맞는 파일이 들어있는 파일시스템과 격리된 시스템 자원 및 네트워크를 사용할 수있 는 독립된 가상공간이라고 해요. 즉, 이미지의 목적에 따라 생성되는 프로세스 단위의 격리 환경이에요. 호스트 입장에서는 격리된 환경을 가진 프..

Study/Docker 2021.06.29

[Spring] 스프링 Interceptor의 동작 과정

Handler Interceptor 전반적인 클라이언트 요청흐름 그림에서 확인해보면, Spring Container내에서 Handler Mapping(수행할 handler 결정) 이후 HandlerAdaptor(결정된 핸들러 수행) 전/후 과정에서 수행됨을 확인할 수 있어요. 주 사용 목적은 핸들러(컨트롤러)의 수정없이 핸들러 수행 전/후처리 동작을 추가하여 핸들러(컨트롤러)의 반복적인 코드를 제거하기 위함이에요. 쉽게 말해, HandlerMapping이 결정한 handler을 HandlerAdapter 수행 전, 후로 가로체어 추가적인 작업이 가능해요. 또한 View 렌더링 이후 클라이언트에게 Response를 전달하기 전에 추가적인 작업이 가능해요. 어디에 사용될까? 가만보니, Filter와 매우 유..

Study/SpringBoot 2021.06.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 { ..

Study/SpringBoot 2021.06.18

[Spring] 쓰레드 관점에서 본 Spring MVC HTTP 요청과정

우선 스프링 MVC의 요청과정을 큰 그림으로 보기로 해요. 큰 흐름으로, 클라이언트가 HTTP 요청을 보내면, WAS는 TCP/IP 연결 대기 과정(welcome 소켓)에서 클라이언트를 위한 소캣(연결 소켓)을 생성해서 연결해요. 연결 이후 많은 과정이 일어나요. (다음 과정으로 간다는 것은, 반환되지 않았다는 얘기에요) WAS는 HTTP 메시지를 파싱해서, Web Server에서만 필요한 정보면, 정적 페이지를 반환해요. Request, Response 객체를 만들어 Filter 객체에 던져줘요. Filter에서 요청된 내용을 변경(인코딩 변환 처리)하거나, 여러가지 체크(XSS 방어)를 해요. 여기서 체크에 걸린다면, 예외를 반환해요. WAS에서 HttpServletRequest, HttpServle..

Study/SpringBoot 2021.06.07

[Network] TCP 연결과정에 대해 알아보자

전반적인 흐름은 이전에 정리했어요. [Network] OSI 7계층이란? [Network] http의 특징과 각각에 대해 간략히 설명해 주세요 TCP는 TCP/IP 모델의 3계층인 트랜스포트 계층의 프로토콜이에요. Port번호를 사용하여 도착지 컴퓨터의 최종 도착지인 프로세스에 까지 데이터가 도달하게 하는 모듈(함수)에요. 데이터를 세그먼트(Segment, 출발지, 목적지 PORT, 전송 제어, 순서 검증 정보)로 감싸요 데이터 전달 보증, 순서를 보장 할 수 있는 이유는 3Way handshake과정이 있기 때문이에요. 애플리케이션 계층과 트랜스포트 계층 사이에는 소켓이라는 것이 존재해요. 소켓은 네트워크(트랜스포트 게층)에서 프로세스(애플리케이션)로 데이터를 전달하며, 프로세스로부터 네트워크로 데이터..

Study/Network 2021.06.03