시스템디자인
-
API 보안을 위한 12가지 TipsReview/ByteByteGo - System Design 2024. 8. 5. 20:00
Use HTTPS (HTTPS 사용)설명: HTTPS를 사용하여 데이터 전송을 암호화하고, 중간에서 데이터가 가로채지지 않도록 보호합니다.Use OAuth2 (OAuth2 사용)설명: OAuth2를 사용하여 안전한 인증 및 권한 부여를 구현합니다. 이를 통해 사용자 자격 증명을 안전하게 관리할 수 있습니다.Use WebAuthn (WebAuthn 사용)설명: WebAuthn을 사용하여 웹 애플리케이션에 강력한 인증을 추가합니다. 이는 생체 인식 및 보안 키를 지원합니다.Use Leveled API Keys (계층형 API 키 사용)설명: API 키에 접근 수준을 부여하여 특정 기능에 대한 접근을 제어합니다. 이를 통해 API 키가 잘못 사용되는 것을 방지할 수 있습니다.Authorization (권한 부..
-
Data Pipeline OverviewReview/ByteByteGo - System Design 2024. 8. 5. 19:00
데이터 파이프라인은 현대 시스템 내에서 데이터를 효율적으로 관리하고 처리하는 데 필수적인 구성 요소입니다. 이러한 파이프라인은 일반적으로 다음의 다섯 가지 주요 단계를 포함합니다: 수집(Collect), 수집(Ingest), 저장(Store), 계산(Compute), 소비(Consume).수집 (Collect):설명: 데이터는 데이터 저장소, 데이터 스트림, 애플리케이션에서 획득됩니다. 데이터는 기기, 애플리케이션, 비즈니스 시스템 등에서 원격으로 수집됩니다.수집 (Ingest):설명: 수집 과정에서 데이터는 시스템에 로드되고 이벤트 큐 내에서 정리됩니다.저장 (Store):설명: 수집 후, 정리된 데이터는 데이터 웨어하우스, 데이터 레이크, 데이터 레이크하우스 및 데이터베이스와 같은 다양한 시스템에 저..
-
IT분야 CAP, BASE, SOLID, KISS 의미Review/ByteByteGo - System Design 2024. 8. 5. 18:30
시스템 설계에서 자주 사용되는 약어들을 설명하는 다이어그램입니다.CAPCAP 정리는 분산 데이터 저장소가 다음 세 가지 보장 중 두 가지만 제공할 수 있다고 말합니다:Consistency (일관성): 모든 읽기는 가장 최근의 쓰기를 받거나 오류를 반환합니다.Availability (가용성): 모든 요청은 응답을 받습니다.Partition tolerance (파티션 허용): 네트워크 장애가 발생해도 시스템은 계속 작동합니다.그러나 이 정리는 분산 시스템에 대해 너무 좁게 정의되었다는 비판을 받았습니다. 네트워크 장애는 분산 시스템에서 반드시 발생하며, 이를 다루는 방법이 필요합니다. 이 주제에 대해 더 알고 싶다면 Martin Kleppmann의 "Please stop calling databases CP..
-
네트워크 주요 프로토콜 Top 8Review/ByteByteGo - System Design 2024. 8. 5. 18:00
네트워크 프로토콜 요약네트워크 프로토콜은 네트워크 상에서 두 컴퓨터 간의 데이터 전송을 위한 표준 방법입니다.HTTP (HyperText Transfer Protocol)설명: HTML 문서와 같은 리소스를 가져오기 위한 프로토콜입니다. 웹에서의 모든 데이터 교환의 기초가 되며 클라이언트-서버 프로토콜입니다.HTTP/3설명: HTTP의 다음 주요 개정판입니다. 모바일 사용이 많은 인터넷 환경을 위해 설계된 새로운 전송 프로토콜인 QUIC을 기반으로 합니다. TCP 대신 UDP를 사용하여 웹 페이지의 응답성을 높입니다. VR 애플리케이션은 복잡한 가상 장면의 세부 사항을 렌더링하는 데 더 많은 대역폭을 요구하며, QUIC을 기반으로 한 HTTP/3로의 마이그레이션을 통해 혜택을 받을 가능성이 큽니다.HTT..
-
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의 채택이 증..
-
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 토큰은 다양한 시스..
-
넷플릭스를 구성하는 기술 - 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를 사용합니..
-
리눅스 부팅 과정 설명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를 시작하여 프로세스와 서비스를 관리하고, 나머지 하드웨어를 탐색하며, 파일 시스템을 마운트하고 데스크톱 환경을 실..