DevOps BootCamp/CS 면접 11

Pinpoint

Data Structure Pinpoint에서 데이터 구조의 핵심은 Spans, Traces, TraceId로 구성 Span RPC(원격 프로시저 호출) 추적의 기본 단위 RPC가 도착할 때 처리된 작업을 나타내며 추적 데이터를 포함 코드 수준 가시성을 보장 SpanEvent라는 하위 항목이 존재 각 Span에는 TraceId가 포함 Trace 스팬 모음 연관된 RPC(Span)로 구성 동일한 추적의 스팬은 동일한 TransactionId를 공유 Trace는 SpanId 및 ParentSpanId를 통해 계층적 트리 구조로 정렬 TraceId TransactionId, SpanId 및 ParentSpanId로 구성 TransactionId는 메시지 ID를 나타내며 SpanId와 ParentSpanId는 ..

애플리케이션 성능 모니터링(APM)

애플리케이션 성능 모니터링 -> 조직이 애플리케이션 및 코드의 성능 문제를 신속하게 식별하고 해결하기 위한 프로세스 APM과 Observability 비교 둘 다 원격 측정을 사용하여 데이터를 수집하고 성능에 대한 인사이트를 제공 APM은 트랜잭션 추적 및 모니터링과 같이 보다 애플리케이션 중심적인 반면, Observability는 애플리케이션 및 인프라 성능 양쪽 모두에 적용 애플리케이션 성능 모니터링은 어떻게 작동하나요? APM은 일련의 도구와 방법론을 사용하여 소프트웨어 애플리케이션의 성능을 모니터링하고 관리 APM 도구에는 일반적으로 응답 시간, 처리량 및 오류율과 같은 주요 메트릭의 모니터링이 포함되어 성능 병목 현상 및 문제를 식별하고 진단. APM 도구는 또한 개발자들이 코드의 문제를 이해하..

(분산 시스템과 병렬 시스템), 로드밸런서 알고리즘, 람다 부하테스트

분산 시스템과 병렬 시스템 분산 시스템은 네트워크로 연결된 여러 컴퓨터가 협력하여 작업을 수행하는 시스템이며, 클라우드 컴퓨팅과 P2P 네트워크가 예시입니다. 병렬 시스템은 하나의 작업을 여러 하위 작업으로 나누어 동시에 처리하여 성능을 향상시키는 시스템으로, 다중 코어 CPU와 GPU가 이에 해당합니다. 분산 시스템의 기술로는 하둡, Apache Spark, Kafka, Flink과 같은 데이터 처리 및 스트리밍 프레임워크가 있습니다. NoSQL 데이터베이스로는 Cassandra와 HBase가 대용량 데이터 관리에 활용되며, 클라우드 기반으로는 Google BigQuery, Amazon Redshift, Microsoft Azure HDInsight 등이 데이터 분석을 지원합니다. 병렬 시스템 기술은 ..

웹, 서버, 네트워크, 엔터프라이즈 시스템

Web World Wide Web의 줄임말로, 인터넷 상에서 정보를 공유하고 검색할 수 있는 시스템을 의미합니다. 웹은 문서, 이미지, 동영상 등 다양한 유형의 정보를 제공하며, 웹 브라우저를 사용하여 이 정보들에 접근할 수 있습니다. 웹은 하이퍼텍스트 시스템으로 구축되어 있어, 다른 웹 페이지로 링크되어 있는 텍스트나 요소를 클릭하여 쉽게 이동할 수 있습니다. 서버 컴퓨터 네트워크에서 다른 컴퓨터들에게 서비스를 제공하거나 데이터를 저장하는 역할을 하는 컴퓨터 시스템을 말합니다. 서버는 다양한 형태로 존재하며, 파일을 저장하는 파일 서버부터 웹 페이지를 제공하는 웹 서버, 이메일을 관리하는 메일 서버, 데이터베이스를 호스팅하는 데이터베이스 서버 등 다양한 용도로 사용될 수 있습니다. 서버는 클라이언트 컴..

(stateful, stateless), (L3, L4 브릿지), Git flow, OSI 7계층, shell script(경험)

stateful이랑 stateless Stateful (상태 유지): "Stateful"은 시스템이나 애플리케이션에서 사용자 상태를 유지하는 것을 나타냅니다. 이는 데이터의 변화나 변동을 계속 추적하고 관리하는 것을 의미합니다. 예를 들어, 로그인한 사용자의 세션 정보, 상품 장바구니의 내용, 현재 음악 재생 위치 등을 저장하고 유지하는 것이 상태 유지적인 방식입니다. 이러한 상태 정보는 보통 데이터베이스나 메모리에 저장될 수 있습니다. 상태 유지적인 시스템은 사용자의 상호작용에 따라 상태가 변경되고, 이전 상태에 의존하는 경우가 많습니다. Stateless (상태 비유지): "Stateless"는 시스템이나 애플리케이션에서 사용자 상태를 유지하지 않는 것을 나타냅니다. 각각의 요청은 독립적이며, 이전 ..

자주 물어보는 질문

Ddos 공격에는 어떻게 대응해야 할까요? 순서대로 알려주세요 실시간 모니터링과 IDS/IPS를 사용하여 이상 트래픽을 감지한다. 트래픽 필터링과 부하 분산을 통해 공격 트래픽을 차단하고 분산시킨다. 클라우드 서비스 활용과 ISP 협조, 긴급 대응 계획을 수립하여 효과적으로 대응한다. SQL 인젝션 방지 Prepared Statements 사용하여 사용자 입력을 쿼리에 하드코딩하지 않고 파라미터로 처리한다. 입력 유효성 검사를 수행하여 사용자 입력 데이터의 형식과 범위를 확인한다. ORM 사용 및 레이어 분리 등 보안 강화 기술을 적용하여 데이터베이스와의 상호작용을 보호한다. DB 데이터 탈취 대응 비상 대응과 감지를 시작하여 침입자의 접근 차단하고 사고 범위를 평가한다. 백업 데이터로 복구하고 침해 조..

Kubernetes

쿠버네티스의 논리적인 구성요소로는 어떤 것들이 있고, 무슨 역할을 하나요? Pod: 역할: 쿠버네티스에서 가장 작은 배포 단위이며, 하나 이상의 컨테이너 그룹을 포함합니다. 동일한 Pod 내의 컨테이너는 동일한 호스트에서 실행되며, 네트워크 및 스토리지 리소스를 공유합니다. ReplicaSet: 역할: ReplicaSet은 여러 개의 Pod 인스턴스를 관리하는 역할을 합니다. 지정된 수의 Pod 인스턴스를 유지하고, 실패한 Pod 인스턴스를 복구하거나 확장하여 스케일링하는 등의 작업을 수행합니다. Deployment: 역할: Deployment는 애플리케이션 배포와 롤링 업데이트를 관리합니다. 원하는 상태(예: 특정 버전의 애플리케이션)를 유지하고, 빠른 롤백 및 롤아웃 기능을 제공하여 애플리케이션의 배..

AWS, 애플리케이션 설계

AWS VPC란 무엇인가요? VPC는 가상 개인 클라우드(Virtual Private Cloud)의 약자입니다. VPC는 클라우드 컴퓨팅 환경에서 프라이빗 네트워크를 구성하기 위해 사용되는 가상 네트워킹 기술입니다. 일반적으로 VPC는 공용 클라우드 제공 업체(예: Amazon Web Services의 Amazon VPC)가 제공하는 클라우드 환경에서 사용됩니다. VPC를 사용하면 사용자는 가상의 네트워크를 생성하고, IP 주소 범위, 서브넷, 라우팅 테이블 등을 정의하여 네트워크를 사용자의 요구에 맞게 구성할 수 있습니다. VPC를 사용하면 사용자는 가상 서버(인스턴스), 데이터베이스, 로드 밸런서 등을 네트워크 내에 배치하여 애플리케이션을 실행할 수 있습니다. 이 가상 서버 및 리소스는 외부에서 접근..

Linux, DevOps

Linux 리눅스 커널은 무슨 역할을 하나요? 리눅스 커널은 운영 체제의 핵심이 되는 소프트웨어입니다. 커널은 컴퓨터 하드웨어와 소프트웨어 간의 인터페이스 역할을 담당하며, 시스템 자원의 관리와 프로세스 스케줄링, 장치 드라이버 제공, 보안 등 다양한 기능을 수행합니다. 리눅스 커널은 다음과 같은 주요 기능을 수행합니다: 시스템 자원 관리: 리눅스 커널은 시스템의 메모리, 프로세서, 디스크 공간 등과 같은 자원을 효율적으로 관리합니다. 이를 통해 다중 사용자 및 다중 작업 환경에서 자원의 공정한 분배를 가능하게 합니다. 프로세스 스케줄링: 리눅스 커널은 실행할 프로세스들을 관리하고, 프로세스 스케줄링을 수행합니다. 이는 여러 프로세스가 동시에 실행될 수 있도록 하며, 우선순위와 시간 할당 등을 조절하여 ..

Docker, 네트워크

Docker 컨테이너에 대해서 설명해 주세요. Docker 컨테이너는 다양한 운영 체제 및 프로그래밍 언어와 호환될 수 있습니다. 각 컨테이너는 필요한 모든 라이브러리, 종속성 및 실행 파일을 포함하고 있으며, 호스트 시스템과 격리되어 독립적으로 실행됩니다. 이를 통해 응용 프로그램을 여러 환경에서 일관되게 실행할 수 있으며, 이식성이 향상됩니다. Docker 컨테이너는 가상화 기술을 사용하여 격리된 환경을 제공합니다. 컨테이너는 호스트 운영 체제의 리소스를 공유하지만, 각 컨테이너는 격리되어 독립적인 파일 시스템, 네트워크 인터페이스 및 프로세스 공간을 가지고 있습니다. 이를 통해 여러 개의 컨테이너를 동시에 실행하고 각각을 관리할 수 있습니다. Docker는 컨테이너 이미지를 사용하여 컨테이너를 생성..