본문 바로가기

전체 글39

MicroService 와 Cloud Native Architecture Cloud Native Architecture기존에서 로컬환경이나 사내에서 구축하고 운영하였던 시스템을 클라우드 환경으로 전환하기 위해서 어떠한 아키텍처를 가져야 하는가?확장 가능한 아키텍처 시스템이 필요에 따라 확장 가능한 형태의 아키텍처로 확장 → 시스템의 수평적 확장에 유연해짐 그와 동시에 확장된 서버로 시스템의 부하분산을 함과 동시에 가용성 보장 가능 스케일업/스케일아웃 스케일업 - 가지고 있는 CPU나 메모리 등을 늘리는 것 스케일아웃 - 같은 사양의 서버 즉 인스턴스를 여러 대 배치함으로써 동시에 많은 사용자들의 요청을 처리할 수 있다. 클라우드 서비스를 제공하는 업체를 이용함으로써 가상의 서버, 가상의 스토리지, 가상의 네트워크 등을 빌려 사용하여 비용을 최소화 → 서버 사용 안 할 땐 리소.. 2023. 8. 23.
키-값 저장소 설계 가상 면접 사례로 배우는 대규모 시스템 설계 기초 - ch5,6 정리 아키텍처 설계는 결국 트레이드 오프이다. 선택에 따른 장단점이 존재하기 때문에 구현하고자 하는 서비스의 방향성에 따라서 각 도구들의 장점과 단점들을 타협하거나 선택하게 된다. 5,6 장은 키-값 저장소를 설계하기 위해 어떤 점들을 고려해서 트레이드오프를 해야 하는지에 대한 대안점들을 제시해 준다. 5장 안정 해시 설계 서버 장애가 났을 때 유연하게 서버를 증설하고 삭제하는 일을 대비해서 요청이나 데이터를 여러 서버에 균등하게 나누는 것이 중요하다. (수평적 규모 확장성) 안정해시는 서버에 데이터나 요청을 어떻게 균등하게 나누는지에 대한 해답을 제시한다. 일반적인 해시 알고리즘을 통해서 서버 인덱스를 할당하는 방법을 먼저 알아보면 해시 .. 2023. 2. 24.
스프링 빌드 시 Docker Container Image 생성 후 DockerHub push 자동화 하기 사이드 프로젝트를 진행하면서 아직 초기단계라 간단하게 백엔드 프로젝트를 docker hub에 배포하여 클라이언트가 간단하게 서버를 띄워서 API를 요청할 수 있게끔 하고있다. 스프링에서 제공하는 bootBuildImage 커맨드를 사용하여 이미지를 생성 후 docker hub에 푸시하고 있는데, 명령어를 굳이 두번 날리지 않아도 build.gradle에서 도커라이징 -> 도커허브에 배포 까지 자동으로 해주는 설정이 있다는 것을 알게되었다. tasks.named("bootBuildImage") { imageName.set("docker.example.com/library/${project.name}") publish = true docker { publishRegistry { username = "user.. 2023. 2. 21.
[ElasticSearch] 엘라스틱서치(3) - inverted index, analyzer '기초부터 다지는 ElasticSearch 운영 노하우' 책을 읽고 정리한 내용입니다. inverted index 엘라스틱서치의 검색엔진을 활용하면 검색이 빠른 이유는 무엇일까? 바로 엘라스틱 서치는 인덱스를 구성할 때 역 색인 구조로 문서를 저장하기 때문이다. 그렇다면 역색인이란 무엇인가? RDB에서는 인덱스를 구성할 때 특정 컬럼을 기준으로 B-tree 구조로 별도의 인덱스 테이블을 만들고 몇 번째 로우에 어떤 데이터가 있다는 방식으로 저장을 하게 된다. 역 색인은 말 그대로 반전된 인덱스로써 어떤 데이터가 몇 번째 로우에 저장되어있는 지의 구조로 저장되는 것이다. 특히나 엘라스틱서치는 여러 단어들로 쪼개서 인덱스에 저장되기 때문에 키워드 검색 시에 뛰어난 속도를 나타낼 수 있는 것이다. 그렇다면 어.. 2022. 11. 15.
[ElasticSearch] 엘라스틱 서치 (2) - 클러스터, 노드, 샤드 기본 개념 '기초부터 다지는 ElasticSearch 운영 노하우' 책을 읽고 정리한 내용입니다. 클러스터 클러스터란? 여러 개의 노드를 하나의 ElasticSearch처럼 동작하게 하는 것 클러스터 내의 노드들은 하나의 ElasticSearch처럼 동작하기 때문에 클러스터를 구성하는 어느 노드에 API요청을 해도 동일한 응답과 동작을 보장한다. 대부분 하나 이상의 노드로 클러스터를 구성하고 사용자 요청을 클러스터 단위로 처리 여러 개의 노드로 클러스터를 구성했을 때 장애 발생 시 대처가 가능하다. 즉 안정적으로 클러스터 유지가 가능 고유의 이름과 UUID를 갖는다. 두 가지의 고유 속성으로 인해 클러스터 내에 속한 노드가 서로 동일한 클러스터 안에 있음을 인지하고 클러스터링 한다. > 클러스터 정보 확인하기 cu.. 2022. 10. 5.
[ElasticSearch] 엘라스틱 서치 (1) - 기본 개념 훑어보기 '기초부터 다지는 ElasticSearch 운영 노하우' 책을 읽고 정리한 내용입니다. ElasticSearch란? Lucene 기반의 오픈소스 검색 엔진. Documents 형식의 문서를 저장하고 검색할 수 있으며 데이터를 통해 분석 작업도 가능하다. > 특징 준 실시간 검색 엔진 실시간에 준하는 수준의 검색 제공 json문서를 입력하면 refresh_interval 파라미터 값(default 1s)에 따라 엘라스틱 서치의 데이터 공간인 샤드에 저장되고 쿼리를 통해 검색이 가능해진다. 클러스터 구성 여러대의 컴퓨터 혹은 구성요소들을 논리적으로 결합하여 전체를 하나의 구성요소처럼 사용할 수 있게 하는 기술 클러스터로 구성하면 높은 수준의 안정성과 부하분산을 시킬 후 있음 node1에 문제가 생기면 문제의.. 2022. 9. 29.
반응형