DevSprout / data-oriented-architecture

데이터 중심 애플리케이션 설계
4 stars 0 forks source link

10장: 일괄 처리 #10

Open LOG-INFO opened 6 months ago

LOG-INFO commented 6 months ago

끄적끄적

MinJunKweon commented 6 months ago

p386. 지금은 맵리듀스의 중요성이 떨어지고 있지만

  • Google은 2014년에 더이상 Map-Reduce를 사용하지 않는다고 발표
  • Map-Reduce는 너무 일반화된 데이터 흐름 엔진이기 때문
  • MapReduce가 이룬 것은 분산 처리로 데이터 플랫폼을 구축할 수 있다고 인식을 변화시켰다는 것
  • 스토리지와 컴퓨팅이 점진적으로 확장 가능하고,
  • 이기종 워크로드를 잘 지원하며,
  • 비싼 머신보다 저렴한 머신에서는 결함이 더 자주 발생하지만, 이에 대해 강력한 내결함성을 가졌다는 것,
  • 등등
  • 구글은 MapReduce 대신 Cloud DataFlow 라는 걸 쓰기 시작했음 (2014년)

유닉스 철학

  1. 각 프로그램이 한 가지 일만 하도록 작성하라
    • 새 작업을 하려면 기존 프로그램을 고쳐 새로운 기능을 추가해 프로그램을 복잡하게 만들기보다는 새로운 프로그램을 작성하라.
  2. 모든 프로그램의 출력은 아직 알려지지 않은 다른 프로그램의 입력으로 쓰일 수 있다고 생각하라.
    • 불필요한 정보로 출력이 너저분해서는 안 된다.
    • 입력 형식으로 엄격하게 열을 맞춘다거나 이진 형태를 사용하지마라. 대화형 입력을 고집하지 마라.
  3. 소프트웨어를 빠르게 써볼 수 있게 설계하고 구축하라.
  4. 프로그래밍 작업을 줄이려면 미숙한 도움보단 도구를 사용하라
    • 도구를 빌드하기 위해 한참 둘러가야 하고 게다가 사용 후 바로 버린다고 할지라도 도구를 써라

p392. 동일한 데이터 모델인 데이터베이스 간에도 한쪽에서 다른 쪽으로 데이터를 옮기는 게 쉽지 않다. => 마이그레이션은 상당히 흔한 유즈케이스인데 왜일까? DB는 상업용으로 판매되는 케이스가 많기 때문에 자사 제품 이탈율을 줄이기 위해서?

p393. 프로그램의 출력을 파이프를 이용해 네트워크와 연결하지는 못한다. => netcat이나 curl를 사용할 수 있음. BSD 소켓 API는 in-out File Descriptor를 1개로 쓴다. (보통은 input / output 각각 1개씩 사용)

유닉스 도구가 성공적인 이유

Reducer는 병합하는 용도로 사용하기 위해서는 Mapper보다 메모리 가용량이 훨씬 커야하지 않나?

배치 프로세스의 출력을 웹 애플리케이션이 질의하는 DB로 보내는 방법이 있을까?

minkukjo commented 6 months ago

끄적끄적

HaeUlNam commented 6 months ago