Review/ByteByteGo - System Design
-
시스템 기능 테스트의 최적 방향 : Best ways to test system functionalityReview/ByteByteGo - System Design 2024. 12. 3. 16:06
Testing system functionality는 소프트웨어 개발 및 엔지니어링 과정에서 중요한 단계다. 시스템이나 소프트웨어 애플리케이션이 예상대로 작동하고 사용자 요구 사항을 충족하며 안정적으로 운영되는지 확인하는 과정을 포함한다. 아래는 시스템 기능 테스트의 주요 방법들이다. 단위 테스트 (Unit Testing)개별 코드 구성 요소가 올바르게 작동하는지 독립적으로 확인한다.통합 테스트 (Integration Testing)시스템의 다른 부분들이 원활하게 함께 작동하는지 검증한다.시스템 테스트 (System Testing)전체 시스템이 사용자 요구 사항과 성능을 충족하는지 평가한다.부하 테스트 (Load Testing)시스템이 높은 작업 부하를 처리할 수 있는지 테스트하고 성능 문제를 식별한다...
-
모바일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..