donnemartin / system-design-primer

Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.
Other
277.5k stars 46.52k forks source link

Make the OmniGraffle template and diagrams available #15

Closed ulkaio closed 7 years ago

ulkaio commented 7 years ago

Hi @donnemartin , I am big fan of your work. I have a question, how you draw these nice diagram, l mean which tools did you used. Thanks.

EDIT by donnemartin: 👍 to indicate interest in the templates.

donnemartin commented 7 years ago

Hi @ulkaio, thanks for the feedback! I use OmniGraffle for the diagrams.

jamescowie commented 7 years ago

Is there any specific template in OmniGraffle you use ?

donnemartin commented 7 years ago

@jamescowie I have a custom set of components I created as a template, I can try to clean those up and make them available if there's interest.

7u4 commented 7 years ago

+1

donnemartin commented 7 years ago

I'll re-open this issue and change the issue title.

jamescowie commented 7 years ago

Thanks so much @donnemartin I would be very interested in this template as I am really impressed with how clean and understandable they are. Its also really hard to find icons such as Database that you have.

Please let me know if I can assist in cleaning them up. I would be more than happy to take that task on and free up some of your time if it makes sense.

donnemartin commented 7 years ago

@jamescowie no problem, I'm working on them already :)

Hope to have them out sometime next week!

ralph-tice commented 7 years ago

While you are working on the templates, have you considered adding a component representing a distributed ordered log service? I see the architecture here as emblematic of the CQRS pattern.

Typically a high scale system will use Kafka, ActiveMQ, RabbitMQ, Mule types of systems for initial persistence and backend workers subscribe to the queue and persist to the storage layer they're responsible for. This avoids the 'dual write' problem from occurring synchronously during the write path as well as isolating the write path from the variable latency of multiple storage engines.

Netflix has a good writeup on their usage here: http://techblog.netflix.com/2016/02/evolution-of-netflix-data-pipeline.html

donnemartin commented 7 years ago

Hi @ralph-tice good suggestion!

I haven't considered adding this yet. Pull requests are welcome :)

ralph-tice commented 7 years ago

I'd love to open up a PR and contribute, can you tag me in the commit/PR when you land the Omnigraffle templates in the repo? Thanks for all your hard work!

donnemartin commented 7 years ago

@ralph-tice awesome, sure I'll tag you thanks!

donnemartin commented 7 years ago

Just a quick update, I'm getting close to wrapping this up. Sorry been really busy lately, I hope to have it out end of this week.

donnemartin commented 7 years ago

Template and diagrams are now available! See https://github.com/donnemartin/system-design-primer/pull/48.