728x90
도커 네트워크도커 네트워크란, Docker 컨테이너 간의 통신을 관리하고 격리하기 위한 기능이다예를 들어, A컨테이너와 B 컨테이너에서 MariaDB가 띄워져 있고 이 두개가 master/slave 관계를 맺고 싶다. 그 경우에 서로가 통신 가능하게끔 추가 설정을 해줘야할텐데 이를 도커 네트워크 기능으로 할 수 있는 것이다. 도커 네트워크의 구조기존 컴퓨터는 서버와 통신 시 네트워크를 통해 이루어진다. 이에 따라 도커 네트워크도 컨테이너들이 서로 통신을 하기 위해 필요한 규칙과 구조를 만들어 준다.그 전에 용어를 몇 개 알고가야 한다 사전용어eth0 (Ethernet network card)이더넷 네트워크 카드, 네트워크 인터페이스, 랜카드 등등으로 불리는데 쉽게 말하면 컴퓨터가 네트워크에 연결되려면..
관찰가능성이란시스템의 내부 상태를 외부에서 이해하고 추론할 수 있는 척도를 얘기한다. 예를 들어 대표적으로 Log를 통해 텍스트를 통한 에러나 상태 변경을 기록할 수도 있고, Metrics로 시스템의 성능을 측정하는 방식도 있다.시스템은 본래 관찰 가능하게 설계됨으로써 시스템에서 발생하는 문제의 근본 원인을 파악할 수 있고 이를 통해 예상치 못한 문제를 사전에 탐지하고자 한다. 관찰가능성의 구성요소로그로그는 시스템 내에서 발생한 이벤트의 상세 기록이다. 사용차 요청이라든지, 에러 메시지라든지. 보통 아래와 같이 시간대 별로 Error가 났니, Debug 메시지니 하는 것들을 다 포함한다.[2024-11-20 10:23:45] ERROR - OrderService - Order ID: 12345 fail..
1. MariaDB 데이터베이스 덤프를 생성mysqldump 명령어를 통해 데이터베이스 백업을 생선한다# 단일 데이터베이스 백업mysqldump -u root -p [데이터베이스이름] > [파일이름].sql# 전체 백업mariadb-dump -u [아이디] -p[패스워드] --all-databases > [백업파일명].sql 그 뒤 MariaDB 환경변수도 확인하여 향후 설정을 대비한다. 2. 도커 이미지 생성하기MariaDB 데이터를 포함한 Docker 이미지를 생성한다FROM mariadb:10.11 # MariaDB 버전 명시ENV MYSQL_ROOT_PASSWORD {비밀번호} # 루트 비밀번호 설정ENV MYSQL_DATABASE {DB명} # 생성할 DB 이름COPY ./{DB명}_a..
인프콘에 나오더라인프콘 2024의 이동욱 개발자님은 인프런 레거시 작업을 하며 여러 개선 사례를 공유했다.초반에 인프런의 국제화를 목표로 함을 언급하는데, 이때 트래픽은 동일한데 계속해서 상승하는 환율로 인한 서버 문제를 언급한다.이어서 따라서 비용을 줄이고자 트래픽을 가만히 둘 수 없어 시도한 작업 중 하나가 이미지 트래픽을 줄이는 방식이었고 이를 통해 avif 확장자를 언급한다. AVIF 확장자란AV1 비디오 코텍을 기반으로 한 차세대 이미지 포맷이다. 압축 방식이 효율적인지라, 높은 품질을 유지하면서도 상대적으로 작은 파일 크기를 저장할 수 있게 한다. 얼만큼 효율적이고 얼만큼 높은 품질을 유지해주냐면 - JPEG 대비 최대 50% 까지의 파일 크기 감소와 더불어 동일 화질 유지- PNG에서만 가..
알다시피 힙을 쓴다기존의 Queue는 먼저 들어온 것이 먼저 나가는 FIFO 구조였다. 여기에 우선순위라는 조건이 더해져, 해당 우선순위가 높은 원소부터 나가는 것이 PriorityQueue다. 그렇다면 이 PriorityQueue(이하 PQ)는 원소의 추가가 일어날때마다 우선순위 조건에 대한 정렬상태를 잘 유지해야 할 것이고, .poll()을 진행할 시 최댓값이나 최솟값에 대해 빠르게 접근하여 가져와야 할 것이다.위와 같은 고려를 하고보니 Heap이 제일 적절하더라인데, 조금만 더 살펴보자. 배열로 구현하면 어디서 문제인가 최솟값에 따라서 정렬된 상태를 배열로 관리하고 있다고 치자, 당연히 배열이니까 최솟값인 첫 자리에만 접근하는 탐색 비용은 O(1)이다. 하지만 이제 '7'이라는 숫자가 들어와 정렬상..
gRPC가 왜 나왔을까MSA한테 REST API는 한계가 있었다REST는 JSON과 XML 기반의 데이터 직렬화를 토대로 가장 대중화된 통신 방법이다. 그런데 이런 텍스트 데이터의 직렬화는 성능과 데이터 크기 면에서, 특히나 대규모 서비스의 실시간 스트리밍이나 양방향 통신에는 적합하지 않은 비효율적 구조를 갖고 있다.더불어 근래의 대규모 분산 시스템와 MSA 아키텍처 확산으로 효율적인 서비스 간 통신 방신이 요구되어 오는데, 다양한 언어로 작성되었을 MSA가 서로 통신할 수 있는 다중 언어 지원 및 타입 안전성도 요구되어왔다. 이에 대해 Google은 한 발 빨랐다. Google은 이미 갖춰진 대규모 분산 시스템에서 효율적인 통신을 위해 Stubby라는 RPC프레임워크를 썼는데, 이게 꽤 성공적이어서 오..