Review
-
SW 아키텍처 스타일 - Top Architectural StylesReview/ByteByteGo - System Design 2024. 8. 2. 16:35
소프트웨어 아키텍처는 시스템의 구조와 동작을 형성하며, 각 아키텍처 스타일은 특정 요구사항과 환경에 따라 장단점을 가지고 있습니다. 올바른 아키텍처를 선택하면 더 견고하고 유지보수 가능한 시스템을 설계할 수 있습니다. 각 아키텍처 스타일과 패턴을 참고하여 프로젝트에 가장 적합한 접근 방식을 선택해야 합니다.계층형 아키텍처 (Layered Architecture, n-tier)설명: 소프트웨어 시스템을 여러 계층으로 분리하여 각 계층이 특정 기능을 담당하도록 하는 구조입니다. 일반적으로 프레젠테이션 계층, 비즈니스 계층, 데이터 접근 계층 등으로 나뉩니다.장점: 유지보수성과 확장성이 높으며, 각 계층이 독립적으로 개발되고 테스트될 수 있습니다.단점: 계층 간의 의존성이 복잡해질 수 있으며, 성능이 저하될 ..
-
넷플릭스를 구성하는 기술 - Netflix's Tech StackReview/ByteByteGo - System Design 2024. 8. 2. 16:00
Mobile and Web모바일 애플리케이션: 넷플릭스는 네이티브 모바일 앱을 개발하기 위해 Swift와 Kotlin을 사용합니다.웹 애플리케이션: 웹 애플리케이션 개발에는 React를 사용합니다.Frontend/Server Communication프론트엔드와 서버 간 통신: GraphQL을 사용합니다.Backend Services백엔드 서비스: 넷플릭스는 ZUUL, Eureka, Spring Boot 프레임워크 및 기타 기술을 사용합니다.Databases데이터베이스: 넷플릭스는 EV Cache, Cassandra, CockroachDB 및 기타 데이터베이스를 사용합니다.Messaging/Streaming메시징/스트리밍: 넷플릭스는 메시징 및 스트리밍 용도로 Apache Kafka와 Flink를 사용합니..
-
SQL 조인의 작동원리 - How do SQL Joins WorkReview/ByteByteGo - System Design 2024. 8. 2. 15:32
SQL 조인의 종류SQL 조인은 두 개 이상의 테이블에서 데이터를 결합하여 단일 결과 집합을 생성하는 데 사용됩니다. 주요 조인의 종류는 다음과 같습니다:INNER JOIN (내부 조인):설명: 두 테이블에서 공통된 값을 가진 행만 결합합니다.예시 쿼리:SELECT A.column1, B.column2FROM TableA AINNER JOIN TableB B ON A.common_column = B.common_column; LEFT JOIN (또는 LEFT OUTER JOIN):설명: 왼쪽 테이블의 모든 행과 오른쪽 테이블의 일치하는 행을 결합합니다. 일치하지 않는 경우 NULL로 표시됩니다.예시 쿼리:SELECT A.column1, B.column2FROM TableA ALEFT JOIN TableB..
-
리눅스 부팅 과정 설명Review/ByteByteGo - System Design 2024. 8. 1. 05:00
1.전원 켜짐BIOS 또는 UEFI 펌웨어가 비휘발성 메모리에서 로드되고 POST(Power On Self Test)를 실행합니다.2. 장치 감지BIOS/UEFI가 CPU, RAM, 저장 장치 등 시스템에 연결된 장치를 감지합니다.3. 부팅 장치 선택운영 체제를 부팅할 장치를 선택합니다. 하드 드라이브, 네트워크 서버 또는 CD ROM 등이 될 수 있습니다.4. 부트 로더 실행BIOS/UEFI가 GRUB 부트 로더를 실행하여 OS 또는 커널 기능을 선택할 수 있는 메뉴를 제공합니다.5. 커널 준비커널이 준비되면 사용자 공간으로 전환합니다. 커널은 첫 번째 사용자 공간 프로세스로 systemd를 시작하여 프로세스와 서비스를 관리하고, 나머지 하드웨어를 탐색하며, 파일 시스템을 마운트하고 데스크톱 환경을 실..
-
REST API 인증 방법Review/ByteByteGo - System Design 2024. 8. 1. 04:00
REST API 인증 방법REST API의 인증은 API 리소스에 접근할 수 있는 권한이 있는 사용자 또는 애플리케이션만 접근할 수 있도록 하는 중요한 관문입니다. 여기에는 몇 가지 주로 사용되는 인증 방법이 있습니다.1. Basic Authentication (기본 인증)설명: 각 요청에 사용자 이름과 비밀번호를 포함하여 전송하는 방식입니다. 하지만 암호화 없이 사용하면 보안에 취약할 수 있습니다.사용 시기: 보안과 암호화가 주요 고려 사항이 아닌 간단한 애플리케이션에 적합하거나, 보안된 연결을 통해 사용할 때 적합합니다.2. Token-Based Authentication (토큰 인증)설명: JSON Web Tokens (JWT)와 같은 생성된 토큰을 클라이언트와 서버 간에 교환하여 로그인 자격 증명..
-
API 성능을 향상시키는 5가지 일반적인 방법Review/ByteByteGo - System Design 2024. 8. 1. 03:00
API 성능 향상 방법결과 페이징 (Result Pagination):대용량 결과 집합을 클라이언트에 스트리밍하여 서비스 응답성과 사용자 경험을 향상시킵니다.비동기 로깅 (Asynchronous Logging):로그를 잠금 없는 버퍼로 보내고 즉시 반환하여 디스크 처리 시간을 줄입니다.데이터 캐싱 (Data Caching):자주 접근하는 데이터를 캐시에 저장하여 데이터베이스 조회를 줄이고 빠른 액세스를 제공합니다.페이로드 압축 (Payload Compression):요청 및 응답을 압축하여 데이터 전송 시간을 줄입니다.연결 풀링 (Connection Pooling):데이터베이스 상호작용을 관리하기 위해 열린 연결의 풀을 사용하여 연결 수명 주기를 효율적으로 관리합니다. 아래는 위 5가지 방법을 포함한 7..
-
데이터가 인터넷을 통해 전송되는 방법 - OSI 7계층 기반 및 TCP/IPReview/ByteByteGo - System Design 2024. 8. 1. 02:00
OSI 모델의 7 계층물리 계층 (Physical Layer) : RS 232C/449데이터 링크 계층 (Data Link Layer) : 접근/흐름/오류/회선제어네트워크 계층 (Network Layer) : 중계/혼잡제어전송 계층 (Transport Layer) : 오류/흐름/혼잡제어(QoS/로드밸런싱) /세션 계층 (Session Layer) : NetBIOS, SAP, SDP, NWlink표현 계층 (Presentation Layer) : ASCII, MPEG, JPEG응용 계층 (Application Layer) : HTTP, FTP, SMTPTCP/IP의 해당 계층TCP/IP는 주로 전송 계층과 네트워크 계층에서 작동합니다. 데이터는 이 계층들을 통해 순차적으로 처리되어 인터넷을 통해 전송됩..
-
Kafka 주요 활용 사례 Top 5Review/ByteByteGo - System Design 2024. 8. 1. 01:00
Top 5 Kafka 사용 사례Kafka는 원래 대규모 로그 처리용으로 설계되었습니다. Kafka는 메시지를 만료될 때까지 유지하며 소비자가 자신의 속도에 맞춰 메시지를 가져갈 수 있도록 합니다.다음은 Kafka의 인기 있는 사용 사례입니다.1. 로그 처리 및 분석Kafka는 대규모 로그 데이터를 실시간으로 수집하고 분석하는 데 사용됩니다. 이는 시스템 모니터링, 오류 탐지 및 데이터 보관에 유용합니다.2. 추천 시스템에서의 데이터 스트리밍추천 시스템은 사용자의 행동을 실시간으로 분석하여 맞춤형 추천을 제공합니다. Kafka는 이러한 데이터 스트리밍을 처리하는 데 적합합니다.3. 시스템 모니터링 및 알림Kafka는 시스템 상태를 실시간으로 모니터링하고, 이상 상황 발생 시 경고를 발송하는 시스템에서 사용..