Ryu
  • ๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป Ryu / software_engineer
  • โœจResume
  • Python3
    • Python3 ๊ฐ€์ƒํ™˜๊ฒฝ ์„ค์ •ํ•˜๊ธฐ
      • Python3 vs Python2
      • Pyenv
      • Venv
      • Pip
    • Flask
      • Flask ์„ค์น˜ํ•˜๊ธฐ
      • API Server ๋งŒ๋“ค๊ธฐ
    • REST API
    • Command Line ํ™œ์šฉํ•˜๊ธฐ
    • Module ์‚ฌ์šฉํ•˜๊ธฐ
      • Pickle - ์ž๋ฃŒํ˜•์„ ํŒŒ์ผ๋กœ ์ €์žฅํ•  ๋•Œ
    • MongoDB connection
      • Pymongo
    • WSGI
      • ๐Ÿ’กWSGI ๊ฐ€ ํ•„์š”ํ•œ ์ด์œ 
      • Web Server / WSGI / Middleware / Application ๊ตฌ์กฐ
      • WSGI Middleware ์ข…๋ฅ˜
      • Gunicorn
        • Gunicorn vs Uwsgi
    • Dockerize
      • ๐Ÿ’กDockerize ๊ฐ€ ํ•„์š”ํ•œ ์ด์œ 
      • 1. Create Dockerfile
        • Gunicorn ์œผ๋กœ nginx ์™€ app ์—ฐ๊ฒฐํ•˜๊ธฐ
    • Kubernetes ๋กœ ๋ฐฐํฌํ•˜๊ธฐ
      • ๐Ÿ’กKubernetes ๊ฐ€ ํ•„์š”ํ•œ ์ด์œ 
      • Helm ์‚ฌ์šฉํ•˜๊ธฐ
      • Helm ์œผ๋กœ k8s ์— ์•ฑ ๋ฐฐํฌํ•˜๊ธฐ
  • Open Tracing (์ •๋ฆฌ์ค‘)
    • Open Tracing ์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€
    • Python OpenTracing Example
    • Jaeger, Jaeger UI
    • Python Jaeger Tutorial
    • Zipkin ์•Œ์•„๋ณด๊ธฐ
    • Jaeger-client ๋ฆฌ์ŠคํŒ…
  • Microservice Architecture
    • Netflix์˜ MSA ์ปจ์…‰
      • โšก๏ธ MSA ๋ฅผ ๋„์ž…ํ• ๋•Œ ๊ณ ๋ คํ•ด์•ผํ•  ์ ๋“ค
  • Paper
    • Dynamo: Amazonโ€™s Highly Available Key-value Store
      • 1. Introduction
      • 2. Background
      • 3. Related Work
        • Related Paper) Pastry, Chord
        • Byzantine Fault Tolerance
      • 4. System Architecture
        • 4.1 System Interface
        • 4.2 Partitioning
        • 4.3 Replication
        • Hash Function
  • Frontend
    • CommonJS ์™€ AMD
    • RequireJS
    • WebSocket
      • WebSocket vs Socket.io
      • polling vs long polling vs streaming
    • Vue.js
      • Vue.js ์—์„œ WebSocket ์‚ฌ์šฉํ•˜๊ธฐ
      • [ํ”„๋กœ์ ํŠธ] Vue, Vuex, AntDesignVue ๋กœ ์šด์˜ํˆด ๋งŒ๋“ค๊ธฐ
    • React x Redux ๋กœ ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค๊ธฐ
      • 0. React, Redux ๋ฅผ ์„ ํƒํ•œ ์ด์œ 
      • 1. ํ”„๋กœ์ ํŠธ ์ƒ์„ฑํ•˜๊ณ  Webpack4 ์ ์šฉํ•˜๊ธฐ
      • 2. React ์™€ ReactDOM ์ ์šฉํ•˜๊ธฐ
      • 3. Material UI ์ ์šฉํ•˜๊ธฐ
  • Data Engineering
    • Spark
      • Spark ์ด๋ž€?
      • ๊ฐ ๋ฐ๋ชฌ์˜ ์—ญํ•  Driver, Master, Worker
      • ์žฅ๋‹จ์  / ํ•จ๊ป˜์‚ฌ์šฉํ•˜๋Š” ํˆด / ์‚ฌ์šฉ ์‚ฌ๋ก€
  • Service Mesh (์ •๋ฆฌ์ค‘)
    • RPC
    • gRPC - Python Server ๋งŒ๋“ค๊ธฐ
      • step 2.
Powered by GitBook
On this page
  • 2.0 Background
  • 2.1 System Assumptions and Requirements
  • 2.2 Service Level Agreements (SLA)
  • 2.3 Design Considerations
  • โญ๏ธ Conflict ์ด ๋‚ฌ์„๋•Œ '์–ธ์ œ' ๊ทธ๋ฆฌ๊ณ  '๋ˆ„๊ฐ€' ํ•ด๊ฒฐํ• ๊ฒƒ์ธ๊ฐ€
  • Key Principles in the design

Was this helpful?

  1. Paper
  2. Dynamo: Amazonโ€™s Highly Available Key-value Store

2. Background

2.0 Background

Amazon ์˜ e-commerce platform

  • ์ˆ˜๋ฐฑ๊ฐœ์˜ ์„œ๋น„์Šค๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ๋‹ค.

  • ์ด ์„œ๋น„์Šค๋“ค์€ ์ „์„ธ๊ณ„์˜ ์—ฌ๋Ÿฌ Data Center ์— ์œ„์น˜ํ•œ ์ˆ˜๋งŒ๋Œ€์˜ ์„œ๋ฒ„๋“ค๋กœ ์ด๋ฃจ์–ด์ง„ ์ธํ”„๋ผ ์•ˆ์—์„œ ํ˜ธ์ŠคํŠธ๋œ๋‹ค.

RDBMS VS NOSQL

  • ์ „ํ†ต์ ์œผ๋กœ production system ๋“ค์€ ๊ทธ๋“ค์˜ ์ƒํƒœ๋ฅผ Relational Database ์— ์ €์žฅํ•œ๋‹ค.

  • ๊ทธ๋Ÿฌ๋‚˜, ์‚ฌ์šฉ ํŒจํ„ด๋“ค ์ค‘ ๋” ๋งŽ์€ ๊ฒฝ์šฐ์— RDB ๋Š” ์ด์ƒ์ ์ธ ์†”๋ฃจ์…˜ ์•„๋‹ˆ๋‹ค.

  • ์ด๋Ÿฐ ์„œ๋น„์Šค๋“ค์˜ ๋Œ€๋ถ€๋ถ„์ด Primary Key ๋กœ๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ํšŒ์ˆ˜ํ•˜๊ณ , ๊ทธ ์ด์ƒ์˜ ๋ณต์žกํ•œ ์ฟผ๋ฆฌ๋‚˜ RDBMS๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์€ ํ•„์š”๋กœ ํ•˜์ง€ ์•Š๋Š”๋‹ค.

  • Inefficient solution by Expensive hardware, highly skilled personnel for its operation

2.1 System Assumptions and Requirements

Query Model

  • simple read and write operations to a data item that is uniquely identified by a key.

ACID properties

  • Dynamo targets applications that operate with weaker consistency (the โ€œCโ€ in ACID) if this results in high availability.

Efficiency

  • The system needs to function on a commodity hardware infrastructure.

  • ๊ฐ’์‹ผ ์„œ๋ฒ„๋“ค์—์„œ๋„ ์˜ค๋ฅ˜์—†์ด ์ž˜ ๋™์ž‘ํ•ด์•ผํ•œ๋‹ค.

  • the storage system must be capable of meeting such stringent SLAs

Internal Service -> No security

  • Dynamo is used only by Amazonโ€™s internal services.

  • to be non-hostile and there are no security related requirements such as authentication and authorization

2.2 Service Level Agreements (SLA)

๋ณดํ†ต์˜ ์„œ๋น„์Šค๋“ค์ด SLA ๋ฅผ ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•

  • provide a response within 300ms for 99.9% of its requests for a peak client load of 500 requests per second.

Amazon ์ด SLA ๋ฅผ ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•

  • At Amazon we have found that these metrics are not good enough if the goal is to build a system where all customers have a good experience, rather than just the majority. ๋Œ€๋‹ค์ˆ˜๊ฐ€ ์ข‹์€ ๊ฒฝํ—˜์„ ํ•˜๊ฒŒ ํ•˜๋Š”๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ALL ๋ชจ๋‘๊ฐ€ ์ข‹์€ ๊ฒฝํ—˜์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

  • To address this issue, at Amazon, SLAs are expressed and measured at the 99.9th percentile of the distribution.

2.3 Design Considerations

โญ๏ธ Conflict ์ด ๋‚ฌ์„๋•Œ '์–ธ์ œ' ๊ทธ๋ฆฌ๊ณ  '๋ˆ„๊ฐ€' ํ•ด๊ฒฐํ• ๊ฒƒ์ธ๊ฐ€

  • An important design consideration is to decide when to perform the process of resolving update conflicts, i.e., whether conflicts should be resolved during reads or writes.

์ „ํ†ต์ ์ธ ๋ฐฉ์‹

  • Many traditional data stores execute conflict resolution during writes and keep the read complexity simple.

Dynamo ์˜ ๋ฐฉ์‹

  • Dynamo targets the design space of an โ€œalways writeableโ€ data store

  • For instance, the shopping cart service must allow customers to add and remove items from their shopping cart even amidst network and server failures.

  • the data store can only use simple policies, such as โ€œlast write winsโ€

  • Conflict ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์€ ์ฝ์–ด๊ฐ€๋Š” ์ฃผ์ฒด, ์ฆ‰ 'ํด๋ผ์ด์–ธํŠธ' ๋‹จ์—์„œ ํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ํด๋ผ์ด์–ธํŠธ๋‹จ์€ ์•„์˜ˆ ์›น ํ”„๋ก ํŠธ๋Š” ์•„๋‹ˆ๊ณ , ์ตœ์ƒ๋‹จ ์›น์„œ๋ฒ„ ์ •๋„๋ฅผ ๋งํ•œ๋‹ค.

Key Principles in the design

1. Incremental scalability

  • Dynamo should be able to scale out one storage host (henceforth, referred to as โ€œnodeโ€) at a time

2. Symmetry

  • Every node in Dynamo should have the same set of responsibilities as its peers

3. Decentralization

  • the design should favor decentralized peer-to-peer techniques over centralized control

4. Heterogeneity

  • the work distribution must be proportional to the capabilities of the individual servers.

  • This is essential in adding new nodes with higher capacity without having to upgrade all hosts at once.

  • 'commodity' ์™€ ๊ด€๋ จ์ด ๊นŠ๋‹ค.

Previous1. IntroductionNext3. Related Work

Last updated 6 years ago

Was this helpful?

Architecture of Amazon's platform