데이터 스토리지, 무중단 배포, 로깅 모니터링

1. 데이터 스토리지

  • 클라우드 환경에서 데이터를 효율적으로 저장하고 확장하는 것은 애플리케이션 성능과 안정성을 보장하는 핵심
  • DB, 파일 스토리지로 데이터의 일관성, 확장성을 보장
  • 다양한 데이터 스토리지에 맞춰 확장성 전략을 세우고 관리해서 클라우드 네이티브 환경에 최적의 아키텍쳐를 구축할 수 있다.

1.1. 클라우드 환경에서 데이터 스토리지

  • 클라우드 환경에서 대규모 트래픽과 데이터를 처리할 수 있도록 설계됨
  • 데이터를 안전하게 저장하고, 필요 시 쉽게 확장할 수 있는 방법을 제공

1.2. 종류

  1. RDBMS
  2. NoSQL

1.3. 분산 데이터 시스템

  • 클라우드 환경에서 분산 데이터 시스템은 필수다.
  • 대규모 트래픽 처리에 유연하다.
  • 예를 들어 Cassandra

2. 데이터 확장성

  • 대규모 데이터를 처리할 때 필수적으로 고려해야 할 요소.
  • 수평, 수직이 있음

    2.1. 수평 vs. 수직

  • 수직(VerticalScaling): 서버 사양 업그레이드
  • 수평(HorizontalScaling): 여러 서버로 데이터를 분산 처리하는 방식

2.2. 샤딩 vs. 파티셔닝 (+ɑ)

  • 샤딩, 파티셔닝 모두 확장하고 성능을 위해서 나누는 방식이지만 차이가 있다.
    1. 샤딩:
    • 데이터를 여러 DB에 분산해서 저장하는 방식이다.
    • 수평 확장을 통해서 대규모 데이터를 처리하거나 트래픽 분산에 사용
    • 독립된 데이터베이스 서버에 저장된다.
    • 샤딩된 데이터는 어떤 샤드에 저장됐는지 알기 위해서 샤딩키를 사용한다.
    • 수평 확장
    • 각 샤드는 독립적
    • 서버 장애시 해당 샤드에만 영향
      1. 파티셔닝
    • 파티셔닝은 하나의 데이터베이스에서 논리적으로 나누는 방법
    • 데이터를 여러 파티션으로 나눠 읽기, 쓰기 성능을 최적화
    • 동일한 데이터베이스 인스턴스에 안에서 유지
    • 수직 확장에 가까운 개념
    • 논리적으로 분리한다.
      1. 캐싱
    • 자주 사용하는 데이터를 메모리에 저장
    • Redis, Memcached가 있다.

      3. 데이터 관리 전략

  • 클라우드 환경에서 데이터 관리는 확장성, 성능을 유지하면서 데이터 안정성, 일관성을 확보하는 것이 핵심

    3.1. 데이터 동기화 및 복제 전략

    1. Master-Slave: DB간 주-종으로 쓰기-읽기를 분할
    2. Multi-Master Replication: 여러 마스터 노드에서 동시에 기록하고 동기화하여 높은 가용성과 성능을 제공

      3.2. 데이터 분석

  • 클라우드 환경에서 데이털르 수집하고 분석하는 작업은 대규모 데이터를 빠르게 처리하는 데 중요(Redshift, BigQuery)

    3.3. 데이터 보안 및 규정 준수

  • 암호화: 클라우드 환경에서 데이터를 저장할 때 암호화는 필수, 데이터의 기밀성과 무결성을 보장하여 공격에 보호
  • 액세스 제어: IAM(Identity and Access Management)을 통해서 클라우드 리소스에 대한 접근 권한을 관리
  • 규정 준수: GDPR, HIPAA 같은 규제 요구 사항을 준수하여 데이터를 처리

    4. 무중단 배포 및 DevOps

  • 단순 기술이 아닌 팀 간 협업과 책임 공유를 중심으로 한 문화다.
  • DevOps 문화에서는 팀이 각자 역할에만 국한되지 않고, 공동 목표를 함께 노력한다.
  • 단순 개발을 넘어서 운영팀과 협력하여 서비스 안정성과 성능 최적화에 참여

    5. 로깅과 모니터링의 중요성

  • 운영에서 중요한 역할을 한다.
  • 로깅은 시스템에서 발생하는 모든 이벤트를 기록
  • 모니터링은 시스템 성능을 실시간으로 추적하고 감시하는 프로세스
  • 클라우드 네이티브는 항상 여러 개의 노드, 컨테이너, 마이크로 서비스에 걸쳐 실행된다.
  • 이로 인해 발생하는 데이터의 흐름, 리소스 사용, 네트워크 트래픽 등을 실시간으로 파악할 수 있음

중요성?

  1. 실시간 문제 감시 및 해결
    • 운영 중 발생할 수 있는 문제 감시
    • 조기 경고로 신속하게 대응할 수 있다.
  2. 성능 최적화
    • 성능 모니터링으로 병목, 비효율점을 찾아서 최적화할 수 있다.
    • 지속적으로 높은 성능을 유지할 수 있다.
  3. 보안 강화
    • 모든 시스템 로깅
    • 보안침해를 빠르게 탐지할 수 있다.
    • 보안 사고 시 로깅 데이터로 추적할 수 있다.
  4. 규정 준수 및 감사
    • 산업 분야에서 법적 규제 및 컴플라이언스 요구사항을 준수하기 위해서 시스템 활동을 철저히 기록하고 관리해야 한다.
    • 모든 활동을 기록하고 아카이빙
  5. 서비스 가용성 및 안정성 유지
    • 클라우드 네이티브에서 여러 개의 서버, 컨테이너, 네트워크를 포함한 복잡한 분산 시스템이 운영된다.
    • 각 요소의 가용성을 보장하는 것이 중요하다.
    • 로깅, 모니터링으로 실시간으로 확인하고 장애 발생 시 자동 복구하거나 재배치하는 등의 조치를 취할 수 있다.

클라우드 네이티브에서?

  1. 동적 확장 및 자원 관리
    • 로깅은 각 확장, 축수에 대한 기록을 남기고 이를 기반으로 자원 관리 최적화를 도울 수 있다.
  2. 복잡한 분산 시스템에서의 통합 관리
    • 모니터링 시스템으로 사용 상태를 감시해서 오토스케일링을 트리거할 수 있다. 리소스 낭비를 막고 적절한 자원을 추가할 수 있다.
  3. 서비스 수준 협약(SLA) 유지
    • 클라우드에서 운영되는 시스템은 일정 수준의 가용성, 응답 시간을 보장해야하는데 로깅과 모니터링을 통해서 이를 준수하는지 확인할 수 있다.
  4. 실시간 분석, 피드백 루프
    • 실시간 데이터를 생성하고 이를 분석해서 시스템 개선, 성능 최적화를 위한 피드백을 제공