Sad Puppy 3 '클라우드' 카테고리의 글 목록 :: 개발자 아지트

[CPU 아키텍처란?]

:하드웨어(CPU)가 작동하는 방식을 나타냄. =마이크로 아키텍처(microarchitecture) 

상용화된 제품은 ARM(RISC)과 x86(CISC) 등이 대표적인 예시임

 

[왜 알아야 하는가?]

: 서비스나 애플리케이션 운영 환경은 하드웨어에서부터 다양함. 

- arm, x86과 같은 CPU부터 GPU, TPU, NPU 까지 고려해야할 환경이 많음

- 사용 가능한 리소스의 제한에 따라서 개발 방향도 변경될 수 있음 

(리소스는 CPU, 메모리, Storage 성능, 네트워크 성능 등 다양한 변수가 존재함)

 

[실무와 가까운 중요이야기]

  • 리눅스의 멀티 유저 특성
    • 리눅스는 여러 사용자가 하나의 시스템에서 동시에 작업할 수 있는 환경을 지원함
    • 각 사용자는 자신의 환경, 파일, 프로세스 등을 독립적으로 관리할 수 있음
  • 컨테이너 기술
    • 이는 리눅스의 멀티유저를 지원하는 특성을 확장해서, 프로세스와 리소스 등을 격리된 환경에서 사용할 수 있도록 제공함
    • 이는 나아가서 클라우드 컴퓨팅과 마이크로서비스 아키텍처를 구성하는데 있어서 중요한 역할을 하게됨

[자주 겪는 문제]

  • Too many open files / 최대 생성 프로세스 제한
    • 설명 
      • 보안상의 이유로 Linux상에서 생성할 수 있는 프로세스나 프로세스가 열 수 있는 파일의 수 등을 제한하고 있음
      • 따라서 개발 과정에서 한번쯤은 마주치는 오류 중 하나임
        • 실제로 프로세스 생성이나 파일 접근을 동시에 다량으로 하거나, Socket 을 다루는 과정에서 발생할 수 있음
          (Socket이 파일로 관리되기 때문)
    • 해결 방법
      • /etc/security/limits.conf 혹은 ulimit 명령어를 통해 제한 값을 조정할 수 있음
  • 부모 프로세스 - 자식 프로세스의 관리
    • 필요에 따라서 자식 프로세스를 생성할 때, 부모 프로세스에 종속되지 않게 독립된 프로세스로 생성할 수 있음
    • 고아 프로세스/좀비 프로세스 문제
      • 시스템 자원이 낭비되고 있는 상태
      • 프로세스 관리의 어려움
      • PID(Process ID)의 낭비
        • 시스템에서 사용할 수 있는 PID 수가 제한되어 있으므로, 프로세스 생성이 불가능해질 수 있
  • OOM(Out of Memory)
    • 메모리 누수(Memory Leak)의 경우
      • 해결 방법
        • 메모리 누수 
          • APM(Application Performance Monitoring) 혹은 프로파일러를 활용해 메모리 누수 지점을 찾고 분석함
          • GC(Garbage Collector)최적화
          • 미사용 자원 해제
    • 계획된 메모리를 초과하는 요청이 오는 경우
      • (하드웨어적 제한) 32bit CPU의 경우 최대 4GB, 물리적인 메모리의 한계에 달하는 경우 등
      • (소프트웨어적 제한) JVM이나 V8 Engine(Node.js에서 관리하는 것) 등에서 제한하는 경우 등
      • 해결 방법
        • 정답은 없음=설득의 영역
        • 상황에 가장 알맞은 사양을 결정해야함. 어떨 때는 스펙 변경으로, 또 다룰 상황에서 코드의 최적화 등으로 해결할 수 있다. 
        • 트레이드 오프를 고려하여 적절한 선택을 할 수 있어야 한다. 

 

 

'클라우드' 카테고리의 다른 글

클라우드  (0) 2024.07.31

[사용 이유]

  • 비용절감
    • 온프레미스 환경(하드웨어를 직접 구매해서 인프라를 구성하는 환경)과 달리, 사용한만큼 비용을 지불하기 때문에 비용 절감 효과가 큼
  • 유연한 확장
    • 리소스 사용량, 네트워크 트래픽을 기준으로 사용량에 맞게 확장과 축소를 할 수 있음
  • 효율적인 관리
    • 인프라 유지보수도 클라우드 벤더사에서 담당하기 때문에 제품 개발에 집중 할 수 있음

[위험성]

  • 데이터 보안
    • 데이터가 클라우드 환경에 저장됨으로써, 온프레미스 환경에 비해 훨씬 해킹이나 데이터 유출 위험에 노출되기 쉬움
  • 서비스 가용성
    • 클라우드 벤더사에 의존하는 격으로, 해당 벤더사에 문제가 생기면 그대로 서비스 문제로 연결됨
  • 비용 관리의 어려움
    • 확장이 쉽게 이루어지는 만큼, 이를 효과적으로 관리하지 못할 경우 비용이 필요 이상으로 지불하게 되는 경우가 발생할 수 있음

[반면 온프레미스 환경의 적합한 사용 환경은??]

  • 보안에 민감한 서비스에서 사용 ex) 금융권, 의료, 정부 사업 등 인프라, 데이터가 물리적으로 분리되어있을 필요가 있는 경우
  • 낮은 지연 시간이 필요한 서비스에서 사용 ex)게임 산업, 금융 서비스, 군사 산업 등의 산업에서 필요로함 

 

클라우드의 단점을 보완하기 위한 조짐

  • 하이브리드 클라우드, 멀티 클라우드 등 다양한 형태의 클라우드 사용 사례들이 나타나고 있음

+ Recent posts