본문 바로가기

공부 기록

(319)
[Talk&Talk] 누구나 쉽게 이해할수 있는 마이크로서비스 아키텍처(MSA) https://youtu.be/8d4h7K_Fq-0 Monolithic Architecture : 애플리케이션 안에 모든 비즈니스 로직이 다 들어가 있는 구조 마이크로서비스 : 서비스를 비즈니스 경계에 맞게 세분화하고, 서비스 간 통신은 네트워크 호출을 통해 진행하여 확장 가능하고 회복적이며 유연한 어플리케이션을 구성하는 것. 앞단에 API Gateway를 둬서 서비스를 외부에 노출하지 않음 MSA는 기존 Monolithic 방법론의 문제점들(개발 유연성의 한계, 요구사항 대처 시간 소요, 장애 격리/신뢰성, 배포/롤백 리스크, 리소스 낭비 => 여러 기능이 뭉쳐 강하게 결합되어 있다는 문제점에서 비롯됨)을 보완했다. MSA를 구성하는 주요 Component 1. Config Management : 서비..
도커 한방에 정리 (모든 개발자들이 배워보고 싶어 하는 툴!) + 실습 https://youtu.be/LXJhA3VWXFA 도커 : 어플리케이션을 패키징할 수 있는 툴 Building Containers : Dockerfile -> Image -> Container Shipping Containers : Container Registry에 push 또는 pull 1. 로컬, 서버에 도커 설치 2. 로컬에서 Dockerfile을 통해 Image build, Container Registry로 push 3. 서버는 pull로 다운로드, 컨테이너 run
가장 쉬운 리눅스 강좌 https://youtu.be/tPWBF13JIVk 커널 : 하드웨어 요소들을 OS의 최하단, 기계를 상대하는 최전선에서 직접 다루고 관리한다. 우분투 리눅스 환경 준비 - 가상머신 소프트웨어(VirtualBox) - 온라인 IDE/터미널(구름IDE) - 윈도우10의 WSL https://www.yalco.kr/35_linux/ 가장 쉽게 배우는 리눅스 어려운 프로그래밍 개념들을 쉽게 설명해주는 유튜브 채널 '얄팍한 코딩사전'. 영상에서 다 알려주지 못한 정보들이나 자주 묻는 질문들의 답변들, 예제 코드들을 얄코에서 확인하세요! www.yalco.kr
DBCP (DB connection pool)의 개념부터 설정 방법까지! hikariCP와 MySQL을 예제로 설명합니다! https://youtu.be/zowzVqx3MQ4 DBCP(DataBase Connection Pool) DB와 연결된 커넥션 풀을 API 요청에 따라 빌리고 반납하는 식으로 사용한다. 연결하고 끊는 것을 반복하는 것이 아니라 미리 맺어진 커넥션을 재사용하는 개념이기 때문에 열고 닫는 시간이 절약됨 DBCP 설정 방법 * DB connection은 백엔드 서버와 DB 서버 사이의 연결을 의미하기 때문에 백엔드 서버와 DB 서버 각각에서의 설정 방법을 잘 알고 있어야 한다. * 아래의 파라미터를 적절하게 설정하는 것이 중요함 DB 서버 설정 - max_connections : 클라이언트와 맺을 수 있는 최대 커넥션 수 - wait_timeout : 커넥션이 inactive할 때 다시 요청이 오기까지 얼마..
DB 인덱스(DB index) !! 핵심만 모아서 설명합니다 !! https://youtu.be/IMDH4iAQ6zM DB에서 Index를 쓰는 이유 - 조건을 만족하는 튜플(들)을 빠르게 조회하기 위해. 빠르게 정렬하거나 그룹핑하기 위해 CREATE INDEX 인덱스명 ON 테이블명 (컬럼명); CREATE UNIQUE INDEX 인덱스명 ON 테이블명 (컬럼1, 컬럼2); SHOW INDEX FROM 테이블명; # 인덱스 조회 PK에서는 인덱스가 자동 생성된다. 사용되는 쿼리에 맞춰서 적절하게 인덱스를 걸어줘야 쿼리가 빠르게 처리될 수 있다. EXPLAIN SELECT ~; ===> 사용 가능한 키(인덱스)와 실제 사용한 키(인덱스)를 보여준다. DB의 optimizer가 적절하게 인덱스를 선택해준다. 특정 인덱스를 사용하도록 명시하고 싶다면? - SELECT * ..
(3부) B tree가 왜 DB 인덱스(index)로 사용되는지를 설명합니다 https://youtu.be/liPSnc6Wzfk B tree의 시간복잡도(B+ tree, B* tree 포함) : 조회/삽입/삭제 => avg & worst case = O(log N) Computer system CPU : 프로그램 코드가 실제로 실행되는 곳 Main memory(RAM) : 실행 중인 프로그램의 코드들과 코드 실행에 필요한 데이터, 혹은 그 결과로 나온 데이터들이 상주하는 곳 Secondary storage(SSD or HDD) : 프로그램과 데이터가 영구적으로 저장되는 곳( RAM). 실행 중인 프로그램의 데이터 일부가 임시 저장되는 곳. 데이터베이스도 여기에 저장! Secondary storage 데이터를 처리하는 속도가 가장 느리다. 데이터를 저장하는 용량이 가장 크다. bl..
(2부) B tree 데이터 삭제 동작 방식을 설명합니다 (DB 인덱스과 관련있는 자료 구조) https://youtu.be/H_u28u0usjA B tree의 특징 이진 탐색 트리(BST)를 일반화한 트리 부모 노드는 자녀 노드를 두 개 이상 가질 수 있다. 노드가 자녀를 x개 가졌다면 key는 x-1개를 가진다. 노드 내의 key들은 오름차순으로 저장된다. 모든 leaf 노드들은 같은 레벨에 있다. B tree 데이터 삭제 * 삭제도 항상 leaf 노드에서 발생한다. * 삭제 후 최소 key 수보다 적어졌다면 재조정한다. 1. key 수가 여유 있는 형제의 지원을 받는다. 2. 1번이 불가능하면 부모의 지원을 받고 형제와 합친다. 3. 2번 후 부모에 문제가 있다면 거기서 다시 재조정한다. * internal 노드 데이터 삭제 : leaf 노드에 있는 데이터(선임자나 후임자)와 위치를 바꾼 후..
(1부) B tree의 개념과 특징, 데이터 삽입이 어떻게 동작하는지를 설명합니다! (DB 인덱스과 관련있는 자료 구조) https://youtu.be/bqkcoSm_rCs 이진 탐색 트리(BST) : 모든 노드의 왼쪽 서브 트리는 해당 노드의 값보다 작은 값들만 가지고, 모든 노드의 오른쪽 서브 트리는 해당 노드의 값보다 큰 값들만 가진다. 자녀 노드는 최대 두 개 1. 자녀 노드의 최대 개수를 늘리기 위해서 부모 노드에 key를 하나 이상 저장한다. 2. 부모 노드의 key들을 오름차순으로 정렬한다. 3. 정렬된 순서에 따라 자녀 노드들의 key 값의 범위가 결정된다. ===> 이런 방식을 사용하면 자녀 노드의 최대 개수를 입맛에 맞게 결정해서 쓸 수 있다. ===> B tree B tree는 BST를 일반화한 tree. 최대 몇 개의 자녀 노드를 가질 것인지가 B tree를 사용할 때 중요한 파라미터 M : 각 노드의..