Review/ByteByteGo - System Design
-
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를 시작하여 프로세스와 서비스를 관리하고, 나머지 하드웨어를 탐색하며, 파일 시스템을 마운트하고 데스크톱 환경을 실..
-
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..