Review
-
C++, JAVA, 파이썬으로 보는 컴파일, 바이트, 인터프리터 언어 차이점Review/ByteByteGo - System Design 2024. 8. 5. 19:30
각 언어 유형 특징컴파일된 언어 (Compiled Languages)설명: 컴파일러가 소스 코드를 기계어로 컴파일합니다. 기계어는 나중에 CPU가 직접 실행할 수 있습니다.예: C, C++, Go바이트코드 언어 (Bytecode Languages)설명: 소스 코드를 먼저 바이트코드로 컴파일한 후, JVM(Java Virtual Machine)이 프로그램을 실행합니다. 때로는 JIT(Just-In-Time) 컴파일러가 소스 코드를 기계어로 컴파일하여 실행 속도를 높입니다.예: Java, C#인터프리터 언어 (Interpreted Languages)설명: 소스 코드가 컴파일되지 않고, 런타임 시 인터프리터에 의해 해석됩니다.예: Python, JavaScript, Ruby내용 요약컴파일된 언어종류: C, C..
-
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의 채택이 증..
-
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 (고립성):설명: 동시에 실행..