지난 글에서는 채팅방에 관련된 API 를 구현하였다. 다음으로 Kafka 와의 통신을 구현할 계획이었으나, 현재 Kafka 를 외부에서 접근할 수 있게 API-Gateway 를 설정중에 있기 때문에 , 그 다음 스텝인 gRPC 를 먼저 공부하고 설정해보는 시간을 갖도록 한다. gRPC 는 알림서비스에서 사용할 예정이며 우리 프로젝트는 MSA 로 설계하였기 때문에 gRPC 의 통신 방법이 적합하다고 판단, 또한 gRPC 에서 자체 스트림 기능을 활용하기로 하여 채택하게 되었다. 1. RPC 란 ?gRPC 를 알기 전에 RPC 에 관해서 먼저 알아야 한다. RPC(Remote Procedure Call) 의 약자이며 프로세스 간 통신을 위해 설계된 프로토콜 또는 개념으로, 네트워크 상의 다른 컴퓨터에서 실행..
분류 전체보기
IntelliJ 에서 Plugins 설정 충돌로 인해 IntelliJ 가 먹통이 된 것을 해결하는 과정이다. 필자는 Macbook 2019 와 Jetbrains 를 활용하여 IntelliJ 를 설치하였다.1. 원인gRPC 사용을 위해 Plugins 설치중에 Protobuf 를 설치하였는데, 주의사항을 읽지 않고 설치한 바람에 IntelliJ 를 재실행하였을 때 먹통이 되었다. IntelliJ 를 강제로 종료한 후에 재실행 해도 먹통이었다. 다음은 주의 사항이다.[!WARNING] This plugin is not compatible with Jetbrains Official Protobuf Plugin bundled in 2021.2 and later. You should disable Protocol ..
드디어 아기다리고기다린 리소스 문제가 해결이 되어 개발에 착수할 수 있게 되었다. 램 32기가, 하드 10TB 를 중고로 구매하여 물리서버를 구축하였다. 원래의 계획은 MSA 설계 및 각 프로젝트에 필요한 서비스를 직접 올리는 것이었으나, 리소스 문제로 개발 기간이 너무 지체되어 서비스를 구축하는 방법에 대해선 설명으로 듣고 백엔드 개발에 집중하기로 하였다.1. 파일 구조처음 node 에서 express 와 socket.IO 를 연습하기위해 파일 구조를 간단하게 만들었었다. 하지만 이제는 직접적으로 서비스가 늘어날 예정이기 때문에 파일 구조를 잘 정의해야 할 것 같다는 판단에 파일 구조를 정리하였다.chat/├── .idea/ # IntelliJ IDEA 설정 폴더├─..
리소스 문제가 해결되면 바로 개발에 들어가기 위해서 ERD 와 API 명세서를 작성하기로 한다. 여기서 ScyllaDB 는 Cassandra 기반으로 만들어진 NoSQL 인데 신기하게도 RDBMS 의 성질을 가지고 있다. 예를들어 mongoDB 는 NoSQL 의 대표적인 DB 인데, 이 친구는 데이터를 삽입할 때 컬럼명이 없으면 알아서 생성해서 주입되는 방식이지만 ScyllaDB 는 컬럼명이 존재하지 않으면 오류가 발생된다. 따라서 ERD를 작성하게 되었다.1. Table 설계먼저, 1차 테이블 설계는 엑셀을 활용하여 작성하였다. 빨강색은 제외시키는 항목, 주황색은 고려할 부분이다.테이블을 설계하는 과정에서 1차 정규화를 통해 데이터 조회시 효율적으로 관리할 수 있게끔 고려하여 설계하였다.채팅방 생성 ..
배포환경이 구성되기 전에 개발환경 세팅부터 하기로 한다. 현재까지 express 와 Socket.IO 간 통신한 것을 Github 에 연동하기로 하고, 명세서 작성을 위한 Swagger 세팅을 작성한다. 1. Github 연동일단 먼저 Github 에 Repository 를 생성한다. 나는 채팅서비스를 담당하고 있기 때문에 chat 이라는 Repository 를 생성하였다. 1. 이미 만들어져 있는 디렉토리를 서로 연결해줘야 하기 때문에 다음 명령어를 통해 저장소를 연결한다.$ git remote [깃허브 레포지토리 주소] 2. gitignore 을 작성하여 git 에 올라가지 않을 파일들을 작성한다. 아래의 링크를 통해 gitignore 를 작성하였다. 자신이 사용하는 운영체제 및 툴 을 작성하면 ..
이번 글은 프로젝트 진행 과정을 기록으로 남기는 글이 될 것 같다. RKE2 Rancher 를 설치하는 과정에서 해결하지 못했던 과정과 원인, 그리고 앞으로의 방향성에 관해서 작성하기로 한다. 1. RKE2 Rancher 설치 실패맥북 로컬 자원을 활용하여 RKE2 Rancher 를 직접 설치하는 과정을 진행하였다. 해당 과정에서는 오류 없이 Rancher 가 정상적으로 설치되어 작동 되는 것을 확인하였다. 하지만 네트워크 대역이 다른 두 VM 간에서의 설치는 실패하였다. 문제는 Rancher 의 Webhook 이 정상적으로 동작하지 않아 cert-manager 를 인증받는 과정에서부터 동작하지 않았다. 원인으로는 RKE2 는 기본적으로 모든 통신을 localhost 로 바라보고 있었고, 이를 해결하기..
·개인공부
1. RancherRancher 는 Kubernetes 클러스터를 편리하게 관리하고 운영하기 위한 오픈소스로, 웹 UI 를 통해 Kubernetes 를 더 쉽게 구축하고 관리할 수 있도록 도와주는 도구이다. 따라서 Kubernetes 클러스터의 생성, 관리, 모니터링, 그리고 사용자 관리 기능 등을 제공하여 운영 및 관리의 편의성을 높여주는 관리 인터페이스 역할을 한다. 1.1 Rancher 의 주요 기능Rancher 는 클러스터 관리, 사용자 및 접근제어, 애플리케이션 관리, 모니터링 및 로깅, 하이브리드 및 멀티 클라우드를 지원하는 역할을 한다. 주요 기능은 다음과 같다.멀티 클러스터 관리 : 단일 대시보드에서 여러 Kubernetes 클러스터를 관리할 수 있다. 클러스터의 상태 확인, 워크로드 배포..
·개인공부
1. 마스터 노드Kubectl : 쿠버네티스 클러스터에 명령을 내리는 역할을 한다. 다른 구성 요소들과 다르게 바로 실행되는 명령 형태인 바이너리(binary) 로 배포되기 때문에 마스터 노드에 있을 필요는 없으나 통상적으로 API 서버와 주로 통신하기 때문에 API 서버가 위치한 마스터 노드에 표현한다.API 서버 : 쿠버네티스 클러스터의 중심 역할을 하는 통로이다. 주로 상태 값을 저장하는 etcd 와 통신하지만, 그 밖의 요소들 또한 API 서버를 중심에 두고 통신하기 때문에 API 서버의 역할이 매우 중요하다. etcd : 구성 요소들의 상태 값이 모두 저장되는 곳이다. etcd 외의 다른 구성 요소는 상태 값을 관리하지 않기 때문에 etcd 의 정보만 백업되어 있다면 긴급항 장애 상황에서도 쿠버..