개발 지식 기록/북스터디 17

DB - 인덱스(index)

인덱스(Index) 지정한 컬럼들을 기준으로 메모리 영역에 목차를 생성하는 것 데이터베이스 테이블에 대한 검색 성능의 속도를 높여주는 자료 구조 특정 컬럼에 인덱스를 생성하면, 해당 컬럼의 데이터들을 정렬하여 별도의 메모리 공간에 데이터의 물리적 주소와 함께 저장된다. 인덱스가 생성된 컬럼을 조건으로 거는 쿼리문을 작업하면 옵티마이저에서 판단하여 생성된 인덱스를 탈 수 있다. 더보기 옵티마이저란? https://coding-factory.tistory.com/743 [DB] 데이터베이스 옵티마이저(Optimizer)에 대하여 옵티마이저(Optimizer)란? 옵티마이저는 가장 효율적인 방법으로 SQL을 수행할 최적의 처리 경로를 생성해주는 DBMS의 핵심 엔진입니다. 컴퓨터의 두뇌가 CPU인 것처럼 DB..

데이터베이스

데이터베이스의 기본 데이터베이스 (DB, DataBase) - 일정한 규칙, 혹은 규약을 통해 구조화되어 저장되는 데이터의 모음 - 특정 조직의 업무를 수행하는 데 필요한 상호 관련된 데이터들의 모임 - 여러 사람들이 공유하는 사용할 목적으로 통합 관리되는 데이터들의 모임 DBMS (DataBase Management System) - 해당 데이터베이스를 제어, 관리하는 통합 시스템 - DBMS를 통해 데이터베이스를 관리하여 응용 프로그램들이 데이터베이스를 공유하고, 사용할 수 있는 환경을 제공 - 데이터베이스 안에 있는 데이터들은 특정 DBMS마다 정의된 쿼리 언어(query language)를 통해 삽입, 삭제, 수정, 조회 등을 수행할 수 있다. ※ DBMS의 기능 1) 데이터 정의 - 데이터에 대..

메모리

메모리 계층 1. 레지스터 중앙처리장치(CPU) 내부에 존재하는 기억장치 접근 시간이 중앙처리장치의 처리 속도와 비슷함 휘발성, 속도 가장 빠름, 용량 작음 2. 캐시 메모리 중앙처리장치가 주기억장치에 접근할 때 속도 차이를 줄이기 위해 사용 실행 중인 프로그램의 명령어와 데이터를 저장 L1, L2 캐시를 지칭 휘발성, 속도 빠름, 용량 작음 3. 주기억장치 중앙처리장치가 직접 데이터를 읽고 쓸 수 있는 장치 레지스터나 캐시 메모리보다 기억 용량이 크다 종류 설명 ROM (Read Only Memory) 읽기만 가능한 읽기 전용 메모리 비휘발성 메모리 종류 : mask-ROM, PROM, EPROM, EEPROM RAM (Random Access Memory) 기억장소를 임의로 접근할 수 있는 메모리 읽..

TCP/IP 4계층 모델

IP (Internet Protocol) 데이터를 패킷(Packet) 이라는 단위로 최대한 빠르게 특정 목적지로 보내는 프로토콜 비신뢰성 : 패킷의 순서 보장이 되지 않고 전달여부도 보장되지 않는다.(유실 가능성이 있다.) 비연결성 : 송신자와 수신자가 데이터 전송을 위해 서로 연결될 필요가 없다. (수신자의 받지 못할 상태인지 여부와 상관 없이 데이터를 보낼 수 있다. 이 경우 수신자는 데이터를 받지 못한다.) IP가 비신뢰성과 비연결성을 갖는 이유 : 통신속도를 가장 중요하게 생각하기 때문 인터넷 속도가 빨라지고 데이터의 신뢰성이 중요해지면서 IP패킷 위에 TCP 패킷을 덮은 TCP/IP 프로토콜을 자주 사용한다. TCP/IP 개념 현재 인터넷에서 사용되는 프로토콜로 시스템 간 네트워크 연결과, 데이..

[디자인 패턴] 팩토리 패턴

팩토리 패턴에 대해 자세한 내용에 들어가기에 앞서 GoF의 디자인 패턴 분류를 통해 팩토리 패턴이 어떤 카테고리에 속하는지 미리 확인하고자 한다. GoF의 디자인 패턴을 목적에 따라 분류하면 생성 패턴, 구조 패턴, 행위 패턴으로 구분되는데 다음과 같이 정의된다. (주로 클래스에 적용되는지, 객체에 적용되는지 범위에 따라 구분하기도 한다.) 생성 패턴 - 객체 생성과 관련된 패턴 구조 패턴 - 클래스나 객체들을 조합해 더 큰 구조로 만들 수 있는 패턴 행위 패턴 - 클래스나 객체들이 상호작용하는 방법을 정의한 패턴 이번에 살펴볼 팩토리 패턴은 생성 패턴 중 추상 팩토리(Abstract Factory) 패턴과 팩토리 메서드(Factory Method) 패턴이다. 팩토리 패턴의 목표는 객체 생성 역할을 별도..

[스프링 부트 핵심 가이드] 13. 서비스의 인증과 권한 부여

본 게시글은 '스프링 부트 핵심 가이드' 책의 내용을 정리한 것입니다. 저자 : 장정우 출판사 : 위키북스 13.1 보안 용어 이해 13.1.1 인증 인증(Authentication) : 사용자가 누구인지 확인하는 단계 ex) 로그인 13.1.2 인가 인가(Authorization) : 인증을 통해 검증된 사용자가 애플리케이션 내부의 리소스에 접근할 때 사용자가 해당 리소스에 접근할 권리가 있는지를 확인하는 과정 13.1.3 접근 주체 접근주체(Principal) : 애플리케이션의 기능을 사용하는 주체 13.2 스프링 시큐리티 스프링 시큐리티는 애플리케이션의 인증, 인가 등의 보안 기능을 제공하는 스프링의 하위 프로젝트 중 하나이다. 13.3 스프링 시큐리티의 동작 구조 스프링 시큐리티는 서블릿 필터(S..

[스프링 부트 핵심 가이드] 12. 서버 간 통신

본 게시글은 '스프링 부트 핵심 가이드' 책의 내용을 정리한 것입니다. 저자 : 장정우 출판사 : 위키북스 최근 마이크로서비스 아키텍처(MSA)의 사용이 많아지고 있다. MSA는 애플리케이션이 가지고 있는 기능(서비스)이 하나의 비즈니스 범위만 가지는 형태이다. 각 애플리케이션은 자신이 가진 기능을 API로 외부에 노출하고, 다른 서버가 그러한 API를 호출해서 사용할 수 있게 구성되므로 각 서버가 다른 서버의 클라이언트가 되는 경우도 많다. RestTemplate과 WebClient는 다른 서버로 웹 요청을 보내고 응답을 받을 수 있게 도와준다. 12.1 RestTemplate이란? RestTemplate은 스프링에서 HTTP 통신 기능을 손쉽게 사용하도록 설계된 템플릿이다. 이를 통해 RESTful ..

[스프링 부트 핵심 가이드] 11. 액추에이터 활용하기

본 게시글은 '스프링 부트 핵심 가이드' 책의 내용을 정리한 것입니다. 저자 : 장정우 출판사 : 위키북스 스프링 부트 액추에이터는 HTTP 엔드포인트나 JMX(Java Management Extensions, 실행 중인 애플리케이션의 상태를 모니터링하고 설정을 변경할 수 있게 해주는 API)를 활용해 애플리케이션을 모니터링하고 관리할 수 있는 기능을 제공한다. 11.1 프로젝트 생성 및 액추에이터 종속성 추가 책에서 실습을 위해 구성한 프로젝트 설정은 다음과 같다. groupId : com.springboot artifactId : actuator name : actuator Developer Tools : Spring Configuration Processor Web : Spring Web + Swa..

[스프링 부트 핵심 가이드] 10. 유효성 검사와 예외 처리

본 게시글은 '스프링 부트 핵심 가이드' 책의 내용을 정리한 것입니다. 저자 : 장정우 출판사 : 위키북스 10.1 일반적인 애플리케이션 유효성 검사의 문제점 검증 로직이 각 클래스별로 분산돼 있어 관리가 어렵다. 검증 로직에 중복이 많아 여러 곳에 유사한 기능의 코드가 존재할 수 있다. 검증해야 할 값이 많다면 검증하는 코드가 길어진다. 이러한 문제로 코드가 복잡해지고 가독성이 떨어지게 된다. 이러한 문제 해결을 위해 자바 진영에서는 Bean Validation이라는 데이터 유효성 검사 프레임워크를 제공한다. 유효성 검사를 위한 로직을 DTO 같은 도메인 모델과 묶어서 각 계층에서 사용하면서 검증 자체를 도메인 모델에 얹는 방식으로 수행한다. 또한 어노테이션을 사용한 검증이기에 코드의 간결함도 유지할 ..

[스프링 부트 핵심 가이드] 09. 연관관계 매핑

본 게시글은 '스프링 부트 핵심 가이드' 책의 내용을 정리한 것입니다. 저자 : 장정우 출판사 : 위키북스 9.1 연관관계 매핑 종류와 방향 연관관계 매핑 종류 One To One : 일대일(1:1) One To Many : 일대다(1:N) Many To One : 다대일(N:1) Many To Many :다대다(N:M) 데이터베이스에서는 두 테이블의 연관관계를 설정하면 외래키를 통해 서로 조인해서 참조하는 구조로 생성되지만 JPA는 엔티티 간 참조 방향을 설정할 수 있다. 단방향 : 두 엔티티의 관계에서 한쪽의 엔티티만 참조하는 형식 양방향 : 두 엔티티의 관계에서 각 엔티티가 서로의 엔티티를 참조하는 형식 연관관계가 설정되면 한 테이블에서 다른 테이블의 기본값을 외래키로 갖게 된다. 외래키를 가진 테..