본문 바로가기
프로젝트

사용 가능한 기술 소개

by 흰색남자 2022. 9. 17.

1. 스프링 부트

스프링 부트는 자바기반의 백앤드 서버 개발 프레임워크입니다. 자바는 기본적으로 멀티 스레드로 동작하므로, 복잡한 연산의 백앤드 서버로 활용가능합니다. 

스프링 부트는 싱글톤 기반의 객체를 활용하여 효율적인 자원사용이 가능합니다. 

또한 프록시 전략을 사용하여 해당 객체가 생성되는 시점에 객체를 생성하여 자원의 낭비를 줄일 수 있습니다.

 

 

2. 카프카

카프카는 기본적으로는 비동기 메시징 큐 이며, PUB/SUB 구조로 작동합니다.

카프카의 주요 아키텍처는 프로듀서, 브로커 서버, 토픽, 컨수머입니다.

카프카의 장점으로는 페이징 캐시를 사용해 디스크 접근을 최소화하므로 I/O 성능이 뛰어납니다.

또한 단순 브로커 서버를 늘리는 것 만으로도 성능이 높아지는 뛰어난 확장성을 갖춰 스타트업부터 대기업까지 많은 기업들이 사용합니다.

 

 

 

3. 하둡

하둡은 분산처리 파일시스템이며 액티브/스탠바이 구조의 페일오버 기능을 제공합니다.

여러 데이터 노드에 데이터를 분산 저장 및 복제를 하므로 안전하게 데이터를 저장할 수 있고, 저널링 노드가 있으므로  시스템 장애 발생시 뛰어난 복구 기능을 제공합니다. 

작동구조는 엑티브 네임 노드의 잡 트래커가 각 네임노드에 자원을 요청하면 각 데이터 노드들의 테스크 트레커가 RDD 연산에 의해 데이터가 반환됩니다.

주로 하둡의 HDFS 위에 HBASE 데이터 베이스를 얹어서 사용합니다.

 

 

4. 엘라스틱 서치

엘라스틱 서치는 검색엔진입니다. 다른 데이터베이스와는 다르게 역 인덱싱을 지원하여 키워드에 따른 빠른 검색이 가능합니다. 하지만 수정, 삭제는 많은 비용이 들어가므로 데이터베이스로서의 역할은 적합하지 않습니다.

 

5. 레디스 

마스터 슬레이브 구조이고 PUB/SUB 기능을 지원합니다. 또한 인메모리 기반의 휘발성 데이터베이스의 특징을 가지고 있습니다. 주로 캐싱을 위한 프록시 서버로서의 기능을 수행합니다.

 

 

7. 쿠버네티스 

쿠버네티스는 컨테이너 관리를 위한 오픈소스 오케스트레이션 도구입니다. 기존 도커와는 다르게 pod수준에서 ip가 부여됩니다. 

여기서 POD 수준에 IP를 부여하는 이유는 호스트(node)에서 ip를 부여한다면, 컨테이너가 늘어 날 때 마다, 포트의 관리가 너무 복잡해 질 것입니다.

그렇다고 컨테이너 수준에서 ip를 부여한다면, 변화하는 네트워크에서 nat 프로토콜에 과부하가 걸릴 것 입니다.

이러한 이유를 바탕으로 쿠버네티스에서는 호스트와 컨테이너 중간 수준인 pod수준에서 ip를 부여함에 따라

균형잡힌 설계를 구현할 수 있습니다.

 

쿠버네티스에서 컨테이너를 관리하는 방법에는 여러가지가 있습니다. 이 중 가장 많이 사용된다고 생각하는 기법은 오토 스케일링과 롤링 업데이트입니다. 오토 스케일링은 Kubectl 명령에 의해 컨테이너를 늘리라고 지시하면, 자동으로 컨테이너를 확장하여 좀 더 부하를 줄이는 기법입니다. 롤링업데이트는 컨테이너 하나씩 업데이트하여 서비스가 중지되지 않고 유지되면서 프로젝트를 업데이트하는 기법입니다.

 

 

 

 

 

 

'프로젝트' 카테고리의 다른 글

리액트 생명주기 KEY  (0) 2023.10.19
스프링 로깅 logback, kafka  (0) 2022.11.14
카카오 클라우드 스쿨 VPN 구축 프로젝트  (0) 2022.09.06