[Networking] gRPC 개요
·
Golang
📌 RPC(Remote Procedure Calls)분산 시스템에서 편하게 프로그래밍하기 위해 등장한 모델로, 네트워크를 통해 서로 다른 시스템에 있는 프로그램들이 마치 로컬 함수인 것처럼 서로의 기능을 호출할 수 있도록 해주는 프로토콜이다. 클라이언트- 서버 간의 커뮤네케이션에 필요한 상세 정보는 최대한 감추고,개발자는 각 로직에만 집중할 수 있도록 클라이언트, 서버는 일반 메소드를 호출하는 것처럼 개발을 진행한다. RPC를 위한 3가지 구성 요소caller/callee: caller는 RPC를 요청하는 쪽(클라이언트), callee는 요청받아 작업을 수행하는 쪽(서버)Caller: 개발자가 원하는 비즈니스 로직 작성 및 IDL로 호출할 함수 정의.Callee는 호출할 함수의 실제 구현을 작성한다..
[Golang] HTTP 서버를 약한 결합 구성으로 변경하기
·
Golang
📍환경 변수로부터 설정 불러오기 (section 60)단원이 바뀌었으니 go mod 이름을 변경해 독립적인 모듈로 취급해주자. + Makefile의 경로도 수정해준다.config 패키지를 다운로드하기 위해 go get명령은 section60에서 하고, go mod tidy를 해 최적화를 해준다.   도커 컴포즈 설정 변경 후 이미지 삭제 + 컨테이너 실행  다른 cmd창을 열어 실행했을 때도 로컬 통신까지 잘 된다. 📍시그널 처리하기 (section 61)Dockerfile 수정: 최신 GLIBC 버전을 사용하기 위해 우분투로 교체# Build stage# 최신 버전으로 수정 ******FROM golang:1.23.1 AS deploy-builderWORKDIR /app# go.mod, go.sum..
[Golang] Github Actions를 사용한 실행 환경 구축
·
Golang
💫 Github Actions의 권한 수정깃허브 레포 > settings > actions 에서 workflow permissions을 첫번째 걸로 체크, 맨 아래도 체크  💫 테스트와 코드 커버리지 자동 실행1. 새 브랜치 생성2. 두 설정파일 만들기.github/workflows/ 디렉터리 아래에 test.yml, 루트 디렉터리에 .octocov.yml을 만든다. 반드시 두 설정파일 모두 루트 디렉터리 기준으로 해야 깃허브 액션이 파일을 인식할 수 있다.아래 설정 파일들은 GitHub Actions를 통해 PR에 테스트 커버리지를 자동으로 기록하고, 코드와 테스트의 비율을 측정하며 결과를 주석으로 남기는 워크플로를 설정한 것이다. 이 워크플로는 **k1LoW/octocov-action**이라는 액..
[Golang] Docker, Makefile를 사용한 실행 환경 구축
·
Golang
💫 Go 언어의 바이너리 빌드 및 멀티 스테이지 빌드 단일 바이너리 파일바이너리 파일은 컴퓨터가 직접 실행할 수 있는 형태의 프로그램 파일.Go 언어로 작성한 코드는 빌드(build)를 통해 소스 코드 -> 바이너리 파일로 변환빌드: 소스 코드를 컴퓨터가 직접 이해하고 실행할 수 있는 형태로 변환하는 과정단일 바이너리 파일은 하나의 독립된 파일로, 모든 코드와 의존성이 포함되어 있어 다른 라이브러리나 환경 설정 없이 실행할 수 있다. Go는 일반적으로 단일 바이너리 파일로 빌드된다. 따라서 이 파일 하나로 다양한 시스템에서 바로 실행할 수 있다. 즉, Go의 바이너리는 독립적으로 실행할 수 있어 배포에 유리하다. 파일 관리와 배포 과정이 간단 컨테이너컨테이너는 프로그램이 실행되는 격리된 환경을 제공하는..
[Golang] 5.1 동시성, 스레드, 고루틴(Goroutine)
·
Golang
스트림데이터를 연속적으로 처리하는 방식CPU 프로그램 명령어를 실행하는 중앙처리장치코어CPU에서 실제로 작업을 처리하는 유닛멀티프로세서여러 CPU가 작업을 처리하는 시스템.프로세스실행 중인 프로그램.스레드프로세스 내에서 실행되는 작업 단위 💡 프로세스실행 중인 프로그램.OS는 프로그램을 실행할 때 메모리, CPU, 시간, 파일 등 여러 자원을 프로세스에 할당한다.각 프로세스는 독립적으로 실행되며, 서로 간섭하지 않는다.프로세스는 메모리에서 프로그램의 데이터와 명령어를 읽고 쓰면서 작업을 처리한다. 여러 프로세스가 메모리를 동시에 사용하기에, OS가 메모리 관리를 한다. 💡 멀티프로세서여러 개의 CPU(또는 코어)를 가진 시스템.여러 CPU가 동시에 작업을 처리해서 성능을 높일 수 있음멀티프로세서 시스..