Review/ByteByteGo - System Design
-
모바일App 출시 과정Review/ByteByteGo - System Design 2024. 9. 20. 09:37
모바일 앱 출시 과정은 전통적인 방식과 다르다. 아래 내용은 모바일 앱의 출시 과정을 간략하게 정리한 내용이다.등록 및 개발 (iOS 및 Android)iOS와 Android 개발자로 Apple의 개발자 프로그램 및 Google Play Console에 등록iOS의 경우 Swift/Obj-C, Android의 경우 Java/Kotlin을 사용해 플랫폼별 도구로 코드를 작성빌드 및 테스트 (iOS 및 Android)앱의 바이너리 컴파일 및 두 플랫폼의 기능 / 성능 보장을 위한 광범위한 테스트를 수행릴리스 후보 빌드 생성QA (품질 보증)앱을 내부에서 테스트하여 문제를 식별(Dogfooding)외부 사용자와 베타 테스트를 통해 피드백을 수집기능 안정성을 유지하기 위해 회귀 테스트를 진행내부 승인이해 관계자..
-
IT 기술 면접 뿌수기 - IT 기술면접 통과를 위한 참고 사이트Review/ByteByteGo - System Design 2024. 8. 5. 20:30
코딩 면접 (Coding)LeetcodeCracking the Coding Interview 책Neetcode시스템 설계 면접 (System Design Interview)System Design Interview 책 1, 2 (Alex Xu 저)Grokking the System Design (Design Guru 저)Design Data-Intensive Applications 책행동 면접 (Behavioral interview)Tech Interview Handbook (Github 저장소)A Life Engineered (유튜브)STAR 방법 (일반적인 방법)객체 지향 설계(OOD) 면접 (OOD Interview)InterviewreadyOOD by EducativeHead First Desig..
-
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 (권한 부..
-
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의 채택이 증..