CS 9

무중단 배포 3가지 방법 (Rolling, Blue-Green, Canary)

무중단 배포 3가지 방법을 소개한다. 새로운 버전을 배포하는 방식으로 다운타임이 발생하지 않고 배포한다. 3개의 방식 모두 4개의 WAS가 가동중이고 v1 -> v2 로 업데이트 한다고 가정한다. Rolling Update 가장 기본적인 방식이다. 1. 2개의 WAS를 v2로 업데이트한다. 2. 2개의 WAS가 정상 동작하는지 확인한다. 3. 나머지 2개의 WAS도 v2로 업데이트 한다. 단점으로는 잠시 v1과 v2가 동시에 존재하므로 호환성 문제를 일으킬 수 있다. Blue-Green v1을 Blue, v2를 Green으로 가정한다. 1. Green에 4개의 WAS를 올린다. 2. Green이 정상 동작하는지 확인한다. 3. Green으로 트래픽을 전환한다. 4. Blue의 4개의 WAS를 내린다. 단..

CS 2024.01.28

동기 비동기, 블록킹 논블록킹

공통적인 상황으로 함수A가 함수B를 호출했다고 가정한다. 블록킹 (Blocking) 블록킹은 특정한 로직을 실행시켰을때 응답을 기다리는 것을 뜻한다. 예를 들어, B가 실행되는 동안 A는 대기상태에 있다면 블록킹이다. 논블록킹 (NonBlocking) 논블록킹은 특정한 로직을 실행시켰을때 응답을 기다리지 않는다. 예를 들어, B가 실행되는 동안 A는 대기상태에 있지 않고 다른 작업을 수행하면 논블록킹이다. 대기 상태에 있지 않도 다른작업을 수행해야 하기때문에 멀티 쓰레드 환경에서는 별도의 쓰레드에서 실행된다. 동기 (Synchronous) 동기는 블록킹과 유사하지만 응답값을 신경쓴다는 개념이 추가된다. 블록킹은 단순히 대기 상태와 관련이 있다면 동기는 '어떤식으로 응답을 주는가?' 까지 포함된 개념이다...

CS 2024.01.19

GSLB와 CDN

GSLB와 CDN 모두 현재 내가 접속한 위치를 기반으로 가장 가까운 서버로 사용자의 요청을 라우팅하는 역할을 한다. 두 기술은 정적 콘텐츠, 동적 콘텐츠 중 무엇을 다루느냐가 가장 큰 차이점이다. GSLB (Global Server Load Balancing) 동적인 콘텐츠 트래픽 분산 지리적으로 가까운 서버로 요청을 라우팅 할 뿐만 아니라 네트워크 트래픽을 균등하게 분산하는 역할도 한다. 안정성 만약 서버가 다운되더라도 최적의 서버로 요청을 라우팅하기 때문에 서비스 중단을 방지할 수 있다. CDN (Content Delivery Network) 정적인 콘텐츠 캐싱 이미지나 js파일 같은 정적인 콘텐츠를 캐싱해두고 빠르게 제공해 웹사이트의 로딩속도를 향상시킨다.

CS 2024.01.17

쓰레드 특징 (프로세스와 비교)

쓰레드는 프로세스 내부에 존재며 프로세스의 Stack 영역에 해당한다. 1. 메모리 (Memory) 쓰레드는 프로세스 내에서 동일한 메모리 공간을 공유합니다. 이로 인해 데이터 공유 및 효율적인 통신이 가능합니다. 2. 병렬성 (Concurrency) 쓰레드는 동시에 실행될 수 있으므로 다중 쓰레드 프로그래밍을 통해 병렬 처리를 구현할 수 있습니다. 이를 통해 시스템의 성능을 향상시킬 수 있습니다. 3. 작업 분할 (Task Division) 여러 쓰레드를 사용하면 작업을 분할하고 병렬로 처리할 수 있습니다. 이를 통해 복잡한 작업을 각각의 쓰레드에 할당하여 빠르게 실행할 수 있습니다. 4. Context Switching 다중 쓰레드 프로그램에서는 쓰레드 간의 전환이 발생할 때 Context Switc..

CS 2024.01.12

ORM, JPA, Spring Data JPA 란

ORM ORM은 Object Relational Mapping의 줄임말로 "객체 관계 매핑"이라는 뜻이며 객체와 RDB의 데이터를 매핑해주는 역할을 한다. persistent API라고도 한다.(JPA, Hibernate 등) 프로그래밍은 객체지향으로 하는데 그 데이터는 RDB에 맞춘 데이터 기반 저장을 해야 하므로 문제점이 발생한다. (DB Data Object) 이 것을 패러다임 불일치라고 하며 개발자가 직접 이 문제를 해결하기엔 비용이 많이 든다. 그래서 ORM이 탄생했다. ORM의 장점 1. 비즈니스 로직에 더 집중할 수 있다. 2. 재사용 및 유지보수의 편리성이 높다. 3. 한 가지 DB에 의존하지 않아도 된다. ORM의 단점 1. 잘못 사용할 경우 오히려 성능이 안 좋아진다. 2. DB도 알아..

CS 2022.06.09

DB Index

데이터베이스 인덱스란 데이터베이스 테이블에 대한 검색 성능의 속도를 높여주는 '자료구조'입니다. 특정 컬럼에 인덱스를 사용할 수 있으며 별도의 메모리 공간에 데이터의 주소를 저장합니다. 인덱스가 생성되면 Where문 조건 등 으로 해당 컬럼을 넣었을 때 검색 속도가 상승하게 됩니다. 인덱스의 단점 인덱스는 기본적으로 정렬되어 있는 상태를 유지 시켜줘야 합니다. 이 것은 검색속도를 빠르게 해주지만 INSERT, UPDATE, DELETE를 통해서 데이터가 추가되거나 값이 바뀔 때 마다 인덱스 테이블을 재정렬 해줘야 합니다. 속도 또한 무작정 빠르기만 한 것은 아닙니다. 전체데이터의 10~15% 이상을 처리할때는 인덱스를 사용하지 않는 것이 더 빠릅니다. 공간또한 기존의 10%정도를 더 차지합니다. 이러한 ..

CS 2022.05.27

REST API

REST API란, Representational State Transfer(REST), REST아키텍처의 제약 조건을 준수하는 애플리케이션 프로그래밍 인터페이스 Http통신에 CRUD(Create, Read, Updated, Delete)요청을 Resource와 Method로 표현해 특정한 형태로 전달하는 방식이다. 구성 1. Resource 2. Method 3. 표현(JSON, XML) 특징 1. 일관된 인터페이스 - 특정 언어나 기술에 종속X 2. 무상태성 - 서버가 클라이언트의 상태를 저장하지 않음(요청에 대해 처리만 해주면 됨) 3. 캐시 처리 가능 - Http 웹 표준을 사용하기 때문에 Http에서 사용하는 캐시 기능을 사용할 수 있음 4. 서버, 클라이언트 구조 - 각각의 역할이 명확하게 ..

CS 2022.05.22

해시 맵(개별 체이닝, 오픈 어드레스)

헤시 맵은 파이썬의 딕셔너리를 생각하면 된다. Key와 Value로 이루어져 있으며 값에 대한 접근, 삽입, 삭제 등이 O(1)로 매우 빠르다는 장점이 있다. 해시 맵의 원리 1. Key값을 입력으로 받아 해시를 출력하는 해시함수를 돌리게 된다. 2. 해당 해시에 값을 저장한다. 3. 해시가 충돌하면(서로다른 Key가 동일한 해시를 출력) 개별 체이닝 or 오픈 어드레스 방식으로 해결한다. 3-1 개별 체이닝: 해시가 충돌하면 값의 뒷 부분에 Linked List를 이용해 값을 붙인다. (이 경우 키 값은 다르니 매칭되는 key를 찾아 return하면 된다) 3-2 오픈 어드레스: 해시가 충돌하면 비어있는 다른 해시에 값을 저장한다. (파이썬의 딕셔너리는 이 방식) 4. 공간의 3/4(java)이 채워지..

CS 2022.05.18