Review
-
2023 API 프로토콜의 진화Review/ByteByteGo - System Design 2024. 8. 5. 17:30
API 프로토콜은 소프트웨어 애플리케이션 간의 상호 작용을 정의하는 규칙과 형식을 제공합니다. 2023년에는 API 프로토콜의 진화가 지속되며 다양한 새로운 트렌드와 기술이 등장했습니다.주요 API 프로토콜REST (Representational State Transfer):특징: 간단하고 확장성이 뛰어나며, HTTP를 기반으로 하는 가장 널리 사용되는 API 프로토콜입니다.변화: RESTful API는 여전히 인기가 많지만, 보다 효율적인 데이터 전송을 위해 JSON 외에도 GraphQL과 같은 대안을 고려하는 경향이 있습니다.GraphQL:특징: Facebook에서 개발한 쿼리 언어로, 클라이언트가 필요한 데이터만 요청할 수 있게 하여 불필요한 데이터 전송을 줄입니다.변화: GraphQL의 채택이 증..
-
HTTP 주요 메소드 Top 9Review/ByteByteGo - System Design 2024. 8. 5. 17:30
1. HTTP GET설명: 서버에서 리소스를 가져옵니다. 이는 멱등성(idempotent)을 가집니다. 동일한 요청을 여러 번 해도 같은 결과가 반환됩니다.2. HTTP PUT설명: 리소스를 업데이트하거나 생성합니다. 이는 멱등성을 가집니다. 동일한 요청을 여러 번 하면 같은 리소스를 업데이트합니다.3. HTTP POST설명: 새로운 리소스를 생성하는 데 사용됩니다. 이는 멱등성을 가지지 않으며, 동일한 요청을 두 번 하면 리소스가 중복 생성됩니다.4. HTTP DELETE설명: 리소스를 삭제하는 데 사용됩니다. 이는 멱등성을 가집니다. 동일한 요청을 여러 번 하면 같은 리소스를 삭제합니다.5. HTTP PATCH설명: 리소스에 부분적으로 수정 사항을 적용합니다.6. HTTP HEAD설명: GET 요청과..
-
OAuth 2.0 설명 - Oauth 2.0 Explained With Simple TermsReview/ByteByteGo - System Design 2024. 8. 2. 17:30
OAuth 2.0이란?OAuth 2.0은 사용자 자격 증명을 공유하지 않고도 서로 다른 애플리케이션이 안전하게 상호작용할 수 있도록 하는 강력하고 안전한 프레임워크입니다. OAuth에는 사용자, 서버, ID 제공자(Identity Provider, IDP)가 포함됩니다.OAuth 토큰의 역할OAuth를 사용할 때, OAuth 토큰은 사용자의 신원과 권한을 나타냅니다. 이 토큰은 다음과 같은 중요한 역할을 합니다:싱글 사인온(Single Sign-On, SSO):설명: OAuth 토큰을 사용하면 하나의 로그인으로 여러 서비스나 애플리케이션에 로그인할 수 있어 사용자 경험이 간편하고 안전해집니다.시스템 간 권한 부여 (Authorization Across Systems):설명: OAuth 토큰은 다양한 시스..
-
DB ACID 의미 - What does ACID mean?Review/ByteByteGo - System Design 2024. 8. 2. 17:00
ACID는 데이터베이스 트랜잭션의 네 가지 주요 속성을 나타내는 약어입니다. 이 속성들은 데이터베이스 시스템의 안정성과 일관성을 보장합니다.Atomicity (원자성):설명: 트랜잭션이 완전히 수행되거나 전혀 수행되지 않음을 보장합니다. 트랜잭션 내의 모든 작업이 성공해야만 데이터베이스에 반영됩니다.예시: 은행 계좌 이체 시, 돈을 보내는 계좌에서 출금되고 받는 계좌에 입금되는 작업이 모두 성공해야 트랜잭션이 완료됩니다.Consistency (일관성):설명: 트랜잭션 전후에 데이터베이스가 일관된 상태를 유지함을 보장합니다. 모든 트랜잭션은 데이터베이스의 무결성을 유지해야 합니다.예시: 데이터베이스에 정의된 모든 규칙과 제약 조건이 트랜잭션 후에도 유지됩니다.Isolation (고립성):설명: 동시에 실행..
-
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를 시작하여 프로세스와 서비스를 관리하고, 나머지 하드웨어를 탐색하며, 파일 시스템을 마운트하고 데스크톱 환경을 실..