CS
Primary Index / Secondary Index / Composite Index
인덱스는 위와 같이 나뉘어져 있음 인덱스의 유형은 크게 Primary와 Secondary 로 나뉘어짐 책이 page 로 구성되어 있는 것처럼 SQL 서버도 Page로 구성되어있고, 가장 기본적인 단위로 실제 SQL 서버에서 데이터에 접근시에도 Page 단위로 접근함 Primary Index Clustered Index 라고도 함 고정된 두 개의 필드값으로 구성된 인덱스 Index Page 를 키 값 과 데이터 페이지 번호 로 구성하고, 검색하고자하는 데이터의 키 값 으로 페이지 번호 를 검색하여 데이터를 찾음 책으로 비유하면 페이지를 알고 해당 페이지를 펼치는 것과 같음 특정 나열된 데이터들을 일정 기준으로 정렬해주는 인덱스 단순 색인을 추가하는 개념과는 다르게 숫자나 알파벳들의 순서대로 데이터 자체를 ..
인덱스 Index
Index 특정 데이터를 찾아내기 위해서는 전체 데이터를 다 훑어봐야 하는데 그 과정을 빠르게 하기 위해 Index라는 자료구조를 거쳐서 검색을 함 다시말해, Index는 데이터베이스 테이블의 검색 속도를 향상하기 위한 자료구조로 데이터베이스 데이터 조회 성능 향상을 위해 사용함 특정 컬럼(column)에 인덱스를 생성하면, 해당 컬럼의 데이터들을 오름차순으로 정렬하여 별도의 메모리 공간에 데이터의 물리적 주소와 함께 저장되는데, 책으로 가정하면 아래와 같이 표현 할 수 있음 데이터 = 내용 인덱스 = 목차 물리적 주소 = 페이지 번호 장점 + 데이터가 정렬되어 있기 때문에 테이블에서 검색과 정렬 속도를 향상시킴 조건 검색 Where절의 효율성 : 보통 Where절의 사용할 때 특정 조건에 맞는 데이터를..
마이크로서비스 아키텍처와 모놀리식 아키텍처
Architecture 비즈니스 요구 사항을 만족하는 시스템을 구축하기 위해서 전체 시스템에 대한 구조를 정의한 문서 모놀리식 아키텍처 Monolithic Architecture 소프트웨어 프로그램의 전통적인 모델로, 애플리케이션 전체가 하나의 서비스 형태로 개발되어 있는 것을 말합니다. 장점 + 구조가 단순해 개발 및 유지 보수가 용이함 큰 서비스 하나로 이루어져있기 때문에 빌드, 배포, 테스트가 용이함 단점 - 서비스 규모가 커질수록 코드의 복잡도가 증가해 개발 및 유지 보수가 어려워짐 서비스 규모가 커질수록 빌드, 배포 시간이 오래 걸리는데, 작은 수정사항에도 서비스 전체를 다시 빌드하고 배포해야하므로 효율성이 떨어짐 기존 서비스에 새로운 기능이나 기술 스택을 추가하기 어려움 서비스의 어느 한 부분..
비즈니스 로직 Business Logic
Business Logic 프로그램의 핵심 로직, 어떻게 데이터가 생성되고 저장되고 수정되는지를 정의한 것으로 업무에 필요한 데이터처리를 수행하는 응용프로그램의 일부를 말합니다. 예를 들어 쇼핑몰 프로그램에서 장바구니에 물품을 추가할 때마다 결제예정 금액이 수정되는 것이 비즈니스 로직 입니다. 즉, 개발 기능 중 가장 기본적인 Create, Read, Updata, Delete 외에 특정 상황에 맞는 더 복잡한 로직을 구현 할 때가 있는데, 이것이 비즈니스 로직이라고 할 수 있습니다. 이번에 인스타 클론코딩을 진행 하면서 비즈니스 로직에 대한 부분은 resource 에 정의했기에, 간단하게, 어떠한 방식으로 구현되어있는지 살펴보겠습니다. 위와 같이 유저가 회원가입을 진행하는 데에 있어서 확인해야할 것들이..
Blocking, NonBlocking + Synchronous, Asynchronous
Blocking 자신의 작업을 진행하다가 다른 주체의 작업이 시작되면 다른 작업이 끝날 때까지 기다렸다가 자신의 작업을 시작하는 것 Non-Blocking 다른 주체의 작업에 관련없이 자신의 작업을 하는 것 블로킹과 논블로킹 구별 처리되어야 하는 작업이, 전체적인 작업 흐름을 막느냐 안막느냐에 대한 관점 제어권이 누구한테 있느냐 블록킹 Blocking A 함수가 B 함수를 호출하면, 제어권을 A가 호출한 B 함수에 넘겨줌 A함수가 B함수를 호출하면 B에게 제어권을 넘긴다. 제어권을 넘겨받은 B는 열심히 함수를 실행한다. A는 B에게 제어권을 넘겨주었기 때문에 함수 실행을 잠시 멈춘다. B함수는 실행이 끝나면 자신을 호출한 A에게 제어권을 돌려준다. 논블록킹 Non-Blocking A 함수가 B 함수를 호..
로드밸런싱 Load Balancing
Load Balancing 서버에 가해지는 부하(Load)를 분산(Balancing)해주는 장치 또는 기술을 말함 클라이언트와 서버풀(Server Pool, 분산 네트워크를 구성하는 서버들의 그룹) 사이에 위치함 한 대의 서버로 부하가 집중되지 않도록 트래픽을 관리해 각각의 서버가 최적의 퍼포먼스를 보일 수 있도록 함 로브밸런싱의 필요성 서비스의 규모가 커지고, 이용자 수가 늘어나게 되면 기존의 서버만으로는 원할한 서비스 동작이 불가능하기 때문에 여러 대의 서버를 두고 서비스를 제공하는 분산 처리 시스템에서 필요한 기술로 증가한 트래픽에 대처할 수 있는 방법은 크게 두 가지가 있음 1) Scale-up 서버 자체의 성능을 확장하는 것 2) Scale-out 여러 대의 서버를 두는 것 Scale-out의 ..
TLS/SSL Handshake
HTTP와 HTTPS에 대해 알아봤었음 ( 참고 링크 ) HTTPS 동작 과정에서 서버는 클라이언트가 요청을 보낼 때 서버는 암호화를 하기 위한 공개키를 생성해야 하는데, 일반적으로는 인증된 기관 CA(Certificate Authority) 에 공개키를 전송하여 인증서를 발급 받고 있음 즉, HTTPS는 클라이언트와 서버간의 통신을 제3자가 인증을 해주어야 함 이러한 CA는 SSL 인증서를 기준으로 클라이언트가 접속한 서버가 맞는지 확인해줌 SSL 인증서 클라이언트와 서버간의 통신을 제3자가 보증해주는 전자화된 문서를 말함 인증서를 통해 클라이언트가 접속한 서버가 신뢰할 수 있는 서버인지 판단하고 SSL 통신에 사용될 공개키를 클라이언트에게 전달하는 역할을 함 SSL 인증서로 서버가 신뢰할 수 있는지 ..
GET과 POST 방식
GET ? 클라이언트에서 서버로 어떠한 리소스로 부터 정보를 요청하기 위해 사용되는 Method GET을 통한 요청은 URL 주소 끝에 파라미터로 포함되어 전송되며, 이 부분을 쿼리 스트링 (query string) 이라고 부름 Body 부분이 비어있고 헤더에 Body의 콘텐츠 타입을 명시하는 Content-Type 헤더 필드도 적지 않음 http://localhost:3000/login?id=admin&pw=1234 위와 같이 URL뒤에 쿼리 스트링(Key와 Value)을 붙이고 HTTP 패킷의 헤더에 포함해서 서버에 데이터를 요청함 서버에서는 id 와 pw 라는 파라미터 명으로 각각 admin 과 1234 의 파라미터 값을 전달 받을 수 있음 쿼리스트링으로 데이터를 표현하면 중요한 값들(admin 과..