개발 지식 기록 40

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 개념 현재 인터넷에서 사용되는 프로토콜로 시스템 간 네트워크 연결과, 데이..

MyBatis, JPA, JDBC

영속성(Persistence) 1. 데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터의 특성 2. 영속성을 갖지 않는 데이터는 단지 메모리에서만 존재하기 때문에 프로그램이 종료되면 모두 잃어버리게 된다. 때문에 데이터베이스 등을 활용하여 데이터를 영구적으로 저장하여 영속성을 부여한다. 3. Persistence Layer - 프로그램의 아키텍처에서 데이터에 영속성을 부여해주는 계층을 말한다. - JDBC를 이용하여 직접 구현할 수 있지만 Persistence Framework를 이용한 개발이 많다. SQL Mapper와 ORM Persistence Framework는 SQL Mapper 와 ORM으로 나뉜다. 1. ORM은 데이터베이스 객체를 자바 객체로 매핑함으로써 객체 간의 관계를 바탕으로..

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

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

Amazon EC2 인스턴스 생성

이전에 했던 프로젝트에서 EC2 때문에 그렇게 고생을 했지만 그 당시에는 따로 블로그를 하지 않아서 해당 내용을 정리하진 않았다. 이번에 프로젝트를 진행하면서 다시 EC2를 이용하게 되었는데 내용을 많이 까먹어서 이번에는 기억할 때 제대로 정리하려고 한다. '인스턴스 시작' 인스턴스 이름을 적고 사용할 OS를 선택한다. 밑에서 이미지를 선택할 수 있는데 프리티어의 경우 선택지가 한정적이다. 프리티어 사용 가능이라고 적힌 것 중 고른다. 인스턴스 유형도 프리티어는 선택지가 정해져 있다. 과금을 생각할 경우 자신의 용도에 맞게 선택하자. 인스턴스 유형 선택 후 '새 키 페어 생성'을 한다. 원하는 이름을 쓰고 RSA와 pem으로 키페어를 생성한다. 네트워크 설정에서 인터넷 HTTPS / HTTP 트래픽 허용..

Jenkins 사용기(Pipeline)

저번 Jenkins 사용기는 Freestyle Project를 사용해서 브랜치에 Merge 시 자동 빌드와 자동 배포 작업을 진행했다. 다만 Freestyle Project는 제약이 많기 때문에 보통 Pipeline을 사용한다고 한다. Freestyle Project VS Pipeline Freestyle Project는 일렬로 진행되는 파이프라인이라고 이해하면 된다. Jenkins에서 기본적인 틀을 제공해주며, 각 단계별 설정을 해주면 완성된다. 따라서 진입장벽이 낮고 쉽게 사용할 수 있으나 틀을 제공해주기 때문에 커스터마이징이 제한적이고, 병렬처리가 미지원되며, 다수의 Repository와 연계한 사용이 불가능하다고 한다. 반면 Pipeline은 작업과정이 일렬로 진행될 수도 있고 다음처럼 병렬로 진..

Jenkins 사용기(Freestyle project)

기존에는 EC2에 git clone 받고 jar 파일을 만든 뒤 실행시키는 과정을 스크립트로 만들어 실행하는 방법으로 배포를 했다. 하지만 이번에는 Jenkins를 이용한 자동 배포를 시도했고 나름 성공적으로 끝냈기에 이 포스트를 작성한다. 큰 순서는 다음과 같다. 1. Jenkins 서버 가동 및 세팅 2. Jenkins 내 Credential 및 Git, EC2 설정 3. Freestyle project 설정 후 설정 우선 Jenkins는 배포를 위해 이용하는 EC2와 별도의 서버로 운영된다. 나는 네이버 클라우드를 사용해서 Jenkins를 구동시켰다. (현재 신규 가입 회원에게 10만 크레딧을 주는 이벤트를 진행하고 있기 때문에 부담 없이 사용할 수 있었다.) 네이버 클라우드에서 Jenkins 서버..

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

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