API 문서의 필요성API 문서는 개발자들이 만들어 둔 API를 사용하여 서버의 비즈니스 로직과 데이터베이스에 접근할 때, API 사용 방법을 이해하고 다른 시스템과의 상호작용을 원활하게 하기 위해 필요하다. 이를 통해 효율적인 개발, 유지보수, 문제 해결이 가능해진다. 가장 잘 알려진 문서화 도구들은 REST API 개발 시에는 Swagger, GraphQL일 시에는 Playground 등이 있다. 스프레드시트 등 수동 작성에 비교해 보았을 때 생산성 있고, 자동화된 형태의 문서를 생성할 수 있다는 장점이 있다. Swagger란?Swagger는 OpenAPI Specification을 기반으로 한 도구 모음으로, REST API를 설계, 빌드, 문서화, 소비할 수 있게 돕는다. 주요 도구로는 Swag..
전체 글

1. 토픽(Topic)토픽은 kafka에서 데이터가 저장되고 분배되는 논리적인 채널이다. 카프카는 메시지 피드들을 토픽으로 구분하며 각 토픽의 이름은 카프카 내에서 고유하다. 예를 들어, 'user-signups' 라는 토픽은 사용자 가입 정보를 저장할 수 있다. 2. 파티션(Partition) 파티션은 토픽을 나누는 방법이다. 하나의 토픽은 여러 개의 파티션으로 나눌 수 있으며, 각 파티션은 독립적으로 로그처럼 동작한다.(종종 "파티션"과 "로그"를 같은 의미로 사용한다.) 파티션은 데이터 순서를 보장하며, 동시에 읽기와 쓰기 작업을 병렬로 처리할 수 있게 해준다. 3. 세그먼트(Segment) 또는 로그 세그먼트(log segment) 파티션에 기록된 데이터는 로그 세그먼트 파일이라는 물리적 파일에 ..

리눅스의 'top' 명령어는 시스템의 실시간 성능을 모니터링하는 데 사용된다. 주로 CPU와 메모리 사용량을 확인하고, 프로세스들을 관리하는 데 유용하다. 기본적으로 'top' 명령어를 터미널에 입력하면 실시간으로 시스템 상태를 표시하는 대화형 화면이 나타난다.top- 사진 출처 https://sabarada.tistory.com/14 요약 영역은 top 상단에 위치하고 있다. 이 요약영역은 전체 프로세스가 OS에 대해서 리소스를 어느정도 차지하고 있는지를 알려준다. 1. 요약 정보uptime시스템 부팅된 이후 시간(GMT 기준)users현재 로그인한 사용자 수load average시스템의 평균 부하(1분, 5분, 15분 간격) load average 영역은 시스템의 부하를 측정하는 지표로, 특정 시간..

리눅스(Linux)https://www.redhat.com/ko/topics/linux/what-is-linux Linux(리눅스)란?Linux는 OS의 기본 구성 요소인 커널과 함께 번들로 제공되는 툴, 애플리케이션, 서비스로 구성되는 소스 코드가 공개된 오픈소스 소프트웨어 운영 시스템을 뜻합니다.www.redhat.com 리눅스는 오픈소스 운영 체제(OS)이다. 운영체제는 CPU, 메모리, 스토리지처럼 시스템의 하드웨어와 리소스를 직접 관리하는 소프트웨어이다. 서버에 리눅스를 설치하면 해당 OS가 서버의 하드웨어 자원을 관리하고 사용하는 역할을 한다. 우리는 커맨드라인을 통해 컴퓨터에 직접 액세스할 수 있다. 사용자는 커맨드라인을 통해 그래픽 사용자 인터페이스(GUI)가 요청할 수 없는 하드웨어 작업..

CDC(Change Data Capture)는 데이터베이스의 변경 사항을 실시간으로 추적하고 이를 다른 시스템에 전달하는 기술이다. 이를 통해 데이터베이스 변경 내용을 다른 시스템이나 데이터베이스로 실시간 동기화하거나, 분석용 데이터 웨어하우스로 전송할 수 있다. CDC의 주요 목적은 데이터 일관성 유지와 실시간 데이터 통합을 효율적으로 처리하는 것이다.데이터 웨어하우스는 여러 소스에서 가져온 구조화된 데이터와 반구조화된 데이터를 분석하고 보고하는 데 사용되는 엔터프라이즈 시스템이다. 1. 실시간 데이터 복제데이터베이스의 삽입, 수정, 삭제와 같은 변경 사항을 실시간으로 캡처하여 다른 시스템으로 전송한다. 이를 통해 데이터 일관성을 유지하고, 여러 시스템 간의 데이터 동기화를 실시간으로 유지할 수 있다...

MSA와 같은 분산 아키텍처의 경우 (롤링/블루 그린/카나리) 배포 전략이 유용하게 사용될 수 있다. 롤링 배포(Rolling Deployment) 롤링 배포는 어플리케이션의 새로운 버전을 배포할 때, 여러 대의 서버에 순차적으로 배포하는 방식이다. 시작 상태: 두 대의 서버(A와 B)가 동일한 버전의 어플리케이션을 실행 중입니다.서버 A 업데이트: 서버 A에 새로운 버전의 어플리케이션을 배포하고, 배포가 완료되면 헬스 체크를 통해 서버 A가 정상적으로 동작하는지 확인합니다.로드밸런서 업데이트: 서버 A가 정상적으로 동작하는 것이 확인되면 로드밸런서가 서버 A로도 트래픽을 보내기 시작합니다.서버 B 업데이트: 서버 B에 새로운 버전의 어플리케이션을 배포하고, 배포가 완료되면 헬스 체크를 통해 서버 B가..

복잡도자료 구조(data structure)는 효율적으로 데이터를 관리하고 수정, 삭제, 탐색, 저장할 수 있는 데이터 집합이다.복잡도는 시간 복잡도와 공간 복잡도로 나뉜다. 시간 복잡도시간 복잡도란 '입력 크기에 대해 어떠한 알고리즘이 실행되는 데 걸리는 시간'이다. 주요 로직의 반복 횟수를 중점으로 측정되며, 보통 빅오 표기법으로 나타낸다. 빅오 표기법예를 들어 '입력 크기 n'의 모든 입력에 대한 알고리즘에 필요한 시간이 10n^2+n 이라고 한다면 다음과 같은 코드를 작성할 수 있다.for (int i = 0; i 빅오 표기법이란 입력 범위 n을 기준으로 해서 로직이 몇 번 반복되는지 나타내는 것인데, 위 코드의 시간 복잡도를 빅오 표기법으로 나타내면 O(n^2)이 된다. '가장 영향을 많이 ..

데이터베이스의 기본데이터베이스(DB, DataBase)는 일정한 규칙, 규약을 통해 구조화되어 저장되는 데이터의 모음이다. 해당 데이터베이스를 관리, 제어하는 통합 시스템을 DBMS(DataBase Management System)라고 하며, 데이터베이스 안 데이터들은 특정 DBMS마다 정의된 쿼리 언어(query language)를 통해 삽입, 삭제, 수정, 조회 등을 수행할 수 있다. 데이터베이스는 실시간 접근과 공유가 가능하다. 데이터베이스 위에 DBMS가 있고 그 위에 응용 프로그램이 있으며, 이러한 구조를 기반으로 데이터를 주고받는다. 예를 들어 MySQL이라는 DBMS가 있고 그 위에 응용 프로그램에 속하는 Spring boot에서 해당 데이터베이스 안에 있는 데이터 관련 로직을 구축할 수 있..

운영체제(OS, Operating System)은 사용자가 컴퓨터를 쉽게 다루게 해주는 인터페이스이다. 한정된 메모리나 시스템 자원을 효율적으로 분배해준다. 운영체제와 비슷하지만 소프트웨어를 추가로 설치할 수 없는 것을 펌웨어(firmware)라고 한다. 운영체제와 컴퓨터컴퓨터는 하드웨어와 소프트웨어(유저 프로그램)을 관리하는 운영체제와 CPU, 메모리 등으로 이루어져 있다. 운영체제의 역할과 구조운영체제의 역할1. CPU 스케줄링과 프로세스 관리 : CPU 소유권을 어느 프로세스에 할당할지, 프로세스의 생성과 삭제, 자원 할당 및 반환을 관리한다.2. 메모리 관리 : 한정된 메모리를 어떤 프로세스에 얼만큼 할당해야 하는지 관리한다.3. 디스크 파일 관리 : 디스크 파일을 어떠한 방법으로 보관할지 관..

[Network] Overview네트워크란 노드(node)와 링크(link)가 서로 연결되어 있으며 리소스를 공유하는 집합노드란 서버, 라우터, 스위치 등 네트워크 장치링크란 유선, 무선 처리량과 지연 시간'좋은' 네트워크란 많은 처리량을 처리할 수 있으며 지연 시간이 짧고 장애 빈도가 적으며 좋은 보안을 갖춘 네트워크 처리량(throughput)처리량이란 링크 내에서 성공적으로 전달된 데이터의 양으로, 보통 얼만큼의 트래픽을 처리했는지를 나타낸다.트래픽이란 특정 시점에 링크 내에 흐르는 데이터의 양이다.많은 트래픽을 처리한다 = 많은 처리량을 가진다 단위로는 bps(bits per second)를 쓰는데, 초당 전송 또는 수신되는 비트 수이다.처리량은 사용자들이 많이 접속할 때마다 커지는 트래픽, 네트..