<script type="application/json" id="HeaderNotice-apollo-state-992f9e1e-c79c-43fb-96a9-089d825fa346">{}</script> <!-- glamorIds: 7 --> <script type="application/json" id="HeaderNotice-glamor-992f9e1e-c79c-43fb-96a9-089d825fa346">["1htug8r","1yodi52","iepywa","x5hg3h","u0iaox","9ilv8v","gwph6j"]</script> <style>@-webkit-keyframes animation_1htug8r{to{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@-moz-keyframes animation_1htug8r{to{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@-o-keyframes animation_1htug8r{to{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@keyframes animation_1htug8r{to{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@-webkit-keyframes animation_1yodi52{0%{background-position:0 0;}100%{background-position:100em 0;}}@-moz-keyframes animation_1yodi52{0%{background-position:0 0;}100%{background-position:100em 0;}}@-o-keyframes animation_1yodi52{0%{background-position:0 0;}100%{background-position:100em 0;}}@keyframes animation_1yodi52{0%{background-position:0 0;}100%{background-position:100em 0;}}@-webkit-keyframes animation_iepywa{0%, 100%{opacity:0;}50%{opacity:1;}}@-moz-keyframes animation_iepywa{0%, 100%{opacity:0;}50%{opacity:1;}}@-o-keyframes animation_iepywa{0%, 100%{opacity:0;}50%{opacity:1;}}@keyframes animation_iepywa{0%, 100%{opacity:0;}50%{opacity:1;}}@-webkit-keyframes animation_x5hg3h{100%{stroke-dashoffset:0;}}@-moz-keyframes animation_x5hg3h{100%{stroke-dashoffset:0;}}@-o-keyframes animation_x5hg3h{100%{stroke-dashoffset:0;}}@keyframes animation_x5hg3h{100%{stroke-dashoffset:0;}}@-webkit-keyframes animation_u0iaox{0%, 100%{transform:none;-webkit-transform:none;}50%{transform:scale3d(1.1, 1.1, 1);-webkit-transform:scale3d(1.1, 1.1, 1);}}@-moz-keyframes animation_u0iaox{0%, 100%{transform:none;-webkit-transform:none;}50%{transform:scale3d(1.1, 1.1, 1);-webkit-transform:scale3d(1.1, 1.1, 1);}}@-o-keyframes animation_u0iaox{0%, 100%{transform:none;-webkit-transform:none;}50%{transform:scale3d(1.1, 1.1, 1);-webkit-transform:scale3d(1.1, 1.1, 1);}}@keyframes animation_u0iaox{0%, 100%{transform:none;-webkit-transform:none;}50%{transform:scale3d(1.1, 1.1, 1);-webkit-transform:scale3d(1.1, 1.1, 1);}}@-webkit-keyframes animation_9ilv8v{100%{box-shadow:inset 0px 0px 0px 30px #068dfe;}}@-moz-keyframes animation_9ilv8v{100%{box-shadow:inset 0px 0px 0px 30px #068dfe;}}@-o-keyframes animation_9ilv8v{100%{box-shadow:inset 0px 0px 0px 30px #068dfe;}}@keyframes animation_9ilv8v{100%{box-shadow:inset 0px 0px 0px 30px #068dfe;}}.css-gwph6j,[data-css-gwph6j]{border-radius:2px;background-size:200% 100%;width:auto;height:auto;animation:20s animation_1yodi52 0s linear infinite;background:-webkit-linear-gradient(to right, #f1f1f1 0%, #fbfbfb 50%, #f1f1f1 100%); background: -moz-linear-gradient(to right, #f1f1f1 0%, #fbfbfb 50%, #f1f1f1 100%); background: linear-gradient(to right, #f1f1f1 0%, #fbfbfb 50%, #f1f1f1 100%);-webkit-animation:20s animation_1yodi52 0s linear infinite;}</style> <div id="HeaderNotice-react-component-992f9e1e-c79c-43fb-96a9-089d825fa346" data-ssr="true" ><div style="z-index:1000" class="css-gwph6j"></div></div> <script> renderComponent('HeaderNotice','HeaderNotice-react-component-992f9e1e-c79c-43fb-96a9-089d825fa346','HeaderNotice-apollo-state-992f9e1e-c79c-43fb-96a9-089d825fa346','HeaderNotice-glamor-992f9e1e-c79c-43fb-96a9-089d825fa346', 'apollo','{"mobile":false}'); </script> <script type="application/json" id="ToolAlternatives-apollo-state-8c2fa442-f07b-48d8-a46e-c304f79306a5">{"ROOT_QUERY":{"me":null,"tool({\"id\":\"kafka\"})":{"type":"id","generated":false,"id":"Tool:101231773865214260","typename":"Tool"},"tool({\"id\":\"101231773865214260\"})":{"type":"id","generated":false,"id":"Tool:101231773865214260","typename":"Tool"}},"Tool:101231773865214260":{"id":"101231773865214260","imageUrl":"https://img.stackshare.io/service/1063/kazUJooF_400x400.jpg","name":"Kafka","ampStoryEnabled":true,"description":"Kafka is a distributed, partitioned, replicated commit log service. It provides the functionality of a messaging system, but with a unique design.","followers":{"type":"id","generated":true,"id":"$Tool:101231773865214260.followers","typename":"UserConnection"},"company":{"type":"id","generated":true,"id":"$Tool:101231773865214260.company","typename":"Company"},"path":"/kafka","slug":"kafka","following":false,"alternativeTools":{"type":"id","generated":true,"id":"$Tool:101231773865214260.alternativeTools","typename":"ToolConnection"},"function":{"type":"id","generated":true,"id":"$Tool:101231773865214260.function","typename":"Function"},"layer":{"type":"id","generated":true,"id":"$Tool:101231773865214260.layer","typename":"Layer"},"category":{"type":"id","generated":true,"id":"$Tool:101231773865214260.category","typename":"Category"},"features":"Written at LinkedIn in Scala;Used by LinkedIn to offload processing of all page and other views;Defaults to using persistence, uses OS disk cache for hot data (has higher throughput then any of the above having persistence enabled);Supports both on-line as off-line processing","thumbUrl":"https://img.stackshare.io/service/1063/thumb_kazUJooF_400x400.jpg","thumbRetinaUrl":"https://img.stackshare.io/service/1063/thumb_retina_kazUJooF_400x400.jpg","verified":false,"pressUrl":"https://github.com/apache/kafka","githubForksCount":12114,"githubStarsCount":23690,"title":"Distributed, fault tolerant, high throughput pub-sub messaging system","twitterUsername":"apachekafka","websiteUrl":"http://kafka.apache.org/","stacks":19910,"votes":596,"privateFollowers":{"type":"id","generated":true,"id":"$Tool:101231773865214260.privateFollowers","typename":"UserConnection"},"footerAlternateTools({\"first\":5})":{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerAlternateTools({\"first\":5})","typename":"ToolConnection"},"footerNewTools({\"first\":5})":{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerNewTools({\"first\":5})","typename":"ToolConnection"},"footerTopTools({\"first\":5})":{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerTopTools({\"first\":5})","typename":"ToolConnection"},"footerRelatedStackups({\"first\":5})":{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerRelatedStackups({\"first\":5})","typename":"StackupConnection"},"__typename":"Tool","canonicalUrl":"/kafka","fans":22171,"followContext":null,"alternativeTools({\"first\":8})":{"type":"id","generated":true,"id":"$Tool:101231773865214260.alternativeTools({\"first\":8})","typename":"ToolConnection"}},"$Tool:101231773865214260.followers":{"count":18863,"__typename":"UserConnection"},"$Tool:101231773865214260.company":{"name":"Kafka","slug":"kafka","stacks":[],"__typename":"Company"},"$Tool:101231773865214260.alternativeTools":{"count":51,"__typename":"ToolConnection"},"$Tool:101231773865214260.function":{"name":"Message Queue","slug":"message-queue","__typename":"Function"},"$Tool:101231773865214260.layer":{"name":"Application and Data","slug":"application_and_data","__typename":"Layer"},"$Tool:101231773865214260.category":{"name":"Data Stores","slug":"data-stores","__typename":"Category"},"$Tool:101231773865214260.privateFollowers":{"count":0,"__typename":"UserConnection"},"$Tool:101231773865214260.footerAlternateTools({\"first\":5}).edges.0.node":{"name":"ActiveMQ","path":"/activemq","__typename":"Tool"},"$Tool:101231773865214260.footerAlternateTools({\"first\":5}).edges.0":{"node":{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerAlternateTools({\"first\":5}).edges.0.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231773865214260.footerAlternateTools({\"first\":5}).edges.1.node":{"name":"RabbitMQ","path":"/rabbitmq","__typename":"Tool"},"$Tool:101231773865214260.footerAlternateTools({\"first\":5}).edges.1":{"node":{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerAlternateTools({\"first\":5}).edges.1.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231773865214260.footerAlternateTools({\"first\":5}).edges.2.node":{"name":"Amazon Kinesis","path":"/amazon-kinesis","__typename":"Tool"},"$Tool:101231773865214260.footerAlternateTools({\"first\":5}).edges.2":{"node":{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerAlternateTools({\"first\":5}).edges.2.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231773865214260.footerAlternateTools({\"first\":5}).edges.3.node":{"name":"Apache Spark","path":"/spark","__typename":"Tool"},"$Tool:101231773865214260.footerAlternateTools({\"first\":5}).edges.3":{"node":{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerAlternateTools({\"first\":5}).edges.3.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231773865214260.footerAlternateTools({\"first\":5}).edges.4.node":{"name":"Akka","path":"/akka","__typename":"Tool"},"$Tool:101231773865214260.footerAlternateTools({\"first\":5}).edges.4":{"node":{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerAlternateTools({\"first\":5}).edges.4.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231773865214260.footerAlternateTools({\"first\":5})":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerAlternateTools({\"first\":5}).edges.0","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerAlternateTools({\"first\":5}).edges.1","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerAlternateTools({\"first\":5}).edges.2","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerAlternateTools({\"first\":5}).edges.3","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerAlternateTools({\"first\":5}).edges.4","typename":"ToolEdge"}],"__typename":"ToolConnection"},"$Tool:101231773865214260.footerNewTools({\"first\":5}).edges.0.node":{"name":"RethinkDB","path":"/rethinkdb","__typename":"Tool"},"$Tool:101231773865214260.footerNewTools({\"first\":5}).edges.0":{"node":{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerNewTools({\"first\":5}).edges.0.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231773865214260.footerNewTools({\"first\":5}).edges.1.node":{"name":"Amazon SQS","path":"/amazon-sqs","__typename":"Tool"},"$Tool:101231773865214260.footerNewTools({\"first\":5}).edges.1":{"node":{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerNewTools({\"first\":5}).edges.1.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231773865214260.footerNewTools({\"first\":5}).edges.2.node":{"name":"Amazon EMR","path":"/amazon-emr","__typename":"Tool"},"$Tool:101231773865214260.footerNewTools({\"first\":5}).edges.2":{"node":{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerNewTools({\"first\":5}).edges.2.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231773865214260.footerNewTools({\"first\":5}).edges.3.node":{"name":"Amazon Redshift","path":"/amazon-redshift","__typename":"Tool"},"$Tool:101231773865214260.footerNewTools({\"first\":5}).edges.3":{"node":{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerNewTools({\"first\":5}).edges.3.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231773865214260.footerNewTools({\"first\":5}).edges.4.node":{"name":"RedisGreen","path":"/redisgreen","__typename":"Tool"},"$Tool:101231773865214260.footerNewTools({\"first\":5}).edges.4":{"node":{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerNewTools({\"first\":5}).edges.4.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231773865214260.footerNewTools({\"first\":5})":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerNewTools({\"first\":5}).edges.0","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerNewTools({\"first\":5}).edges.1","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerNewTools({\"first\":5}).edges.2","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerNewTools({\"first\":5}).edges.3","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerNewTools({\"first\":5}).edges.4","typename":"ToolEdge"}],"__typename":"ToolConnection"},"$Tool:101231773865214260.footerTopTools({\"first\":5}).edges.0.node":{"name":"MySQL","path":"/mysql","__typename":"Tool"},"$Tool:101231773865214260.footerTopTools({\"first\":5}).edges.0":{"node":{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerTopTools({\"first\":5}).edges.0.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231773865214260.footerTopTools({\"first\":5}).edges.1.node":{"name":"PostgreSQL","path":"/postgresql","__typename":"Tool"},"$Tool:101231773865214260.footerTopTools({\"first\":5}).edges.1":{"node":{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerTopTools({\"first\":5}).edges.1.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231773865214260.footerTopTools({\"first\":5}).edges.2.node":{"name":"MongoDB","path":"/mongodb","__typename":"Tool"},"$Tool:101231773865214260.footerTopTools({\"first\":5}).edges.2":{"node":{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerTopTools({\"first\":5}).edges.2.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231773865214260.footerTopTools({\"first\":5}).edges.3.node":{"name":"Redis","path":"/redis","__typename":"Tool"},"$Tool:101231773865214260.footerTopTools({\"first\":5}).edges.3":{"node":{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerTopTools({\"first\":5}).edges.3.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231773865214260.footerTopTools({\"first\":5}).edges.4.node":{"name":"Amazon S3","path":"/amazon-s3","__typename":"Tool"},"$Tool:101231773865214260.footerTopTools({\"first\":5}).edges.4":{"node":{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerTopTools({\"first\":5}).edges.4.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231773865214260.footerTopTools({\"first\":5})":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerTopTools({\"first\":5}).edges.0","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerTopTools({\"first\":5}).edges.1","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerTopTools({\"first\":5}).edges.2","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerTopTools({\"first\":5}).edges.3","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerTopTools({\"first\":5}).edges.4","typename":"ToolEdge"}],"__typename":"ToolConnection"},"$Tool:101231773865214260.footerRelatedStackups({\"first\":5}).edges.0.node":{"path":"/stackups/kafka-vs-rabbitmq-vs-zeromq","title":"Kafka vs RabbitMQ vs ZeroMQ","__typename":"Stackup"},"$Tool:101231773865214260.footerRelatedStackups({\"first\":5}).edges.0":{"node":{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerRelatedStackups({\"first\":5}).edges.0.node","typename":"Stackup"},"__typename":"StackupEdge"},"$Tool:101231773865214260.footerRelatedStackups({\"first\":5}).edges.1.node":{"path":"/stackups/amazon-sqs-vs-kafka-vs-rabbitmq","title":"Amazon SQS vs Kafka vs RabbitMQ","__typename":"Stackup"},"$Tool:101231773865214260.footerRelatedStackups({\"first\":5}).edges.1":{"node":{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerRelatedStackups({\"first\":5}).edges.1.node","typename":"Stackup"},"__typename":"StackupEdge"},"$Tool:101231773865214260.footerRelatedStackups({\"first\":5}).edges.2.node":{"path":"/stackups/celery-vs-kafka-vs-rabbitmq","title":"Celery vs Kafka vs RabbitMQ","__typename":"Stackup"},"$Tool:101231773865214260.footerRelatedStackups({\"first\":5}).edges.2":{"node":{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerRelatedStackups({\"first\":5}).edges.2.node","typename":"Stackup"},"__typename":"StackupEdge"},"$Tool:101231773865214260.footerRelatedStackups({\"first\":5}).edges.3.node":{"path":"/stackups/kafka-vs-nsq-vs-rabbitmq","title":"Kafka vs NSQ vs RabbitMQ","__typename":"Stackup"},"$Tool:101231773865214260.footerRelatedStackups({\"first\":5}).edges.3":{"node":{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerRelatedStackups({\"first\":5}).edges.3.node","typename":"Stackup"},"__typename":"StackupEdge"},"$Tool:101231773865214260.footerRelatedStackups({\"first\":5}).edges.4.node":{"path":"/stackups/kafka-vs-redis","title":"Kafka vs Redis","__typename":"Stackup"},"$Tool:101231773865214260.footerRelatedStackups({\"first\":5}).edges.4":{"node":{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerRelatedStackups({\"first\":5}).edges.4.node","typename":"Stackup"},"__typename":"StackupEdge"},"$Tool:101231773865214260.footerRelatedStackups({\"first\":5})":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerRelatedStackups({\"first\":5}).edges.0","typename":"StackupEdge"},{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerRelatedStackups({\"first\":5}).edges.1","typename":"StackupEdge"},{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerRelatedStackups({\"first\":5}).edges.2","typename":"StackupEdge"},{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerRelatedStackups({\"first\":5}).edges.3","typename":"StackupEdge"},{"type":"id","generated":true,"id":"$Tool:101231773865214260.footerRelatedStackups({\"first\":5}).edges.4","typename":"StackupEdge"}],"__typename":"StackupConnection"},"$Tool:101231773865214260.alternativeTools({\"first\":8}).pageInfo":{"hasNextPage":true,"endCursor":"OA","__typename":"PageInfo"},"$Tool:101231773865214260.alternativeTools({\"first\":8})":{"pageInfo":{"type":"id","generated":true,"id":"$Tool:101231773865214260.alternativeTools({\"first\":8}).pageInfo","typename":"PageInfo"},"edges":[{"type":"id","generated":true,"id":"$Tool:101231773865214260.alternativeTools({\"first\":8}).edges.0","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773865214260.alternativeTools({\"first\":8}).edges.1","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773865214260.alternativeTools({\"first\":8}).edges.2","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773865214260.alternativeTools({\"first\":8}).edges.3","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773865214260.alternativeTools({\"first\":8}).edges.4","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773865214260.alternativeTools({\"first\":8}).edges.5","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773865214260.alternativeTools({\"first\":8}).edges.6","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773865214260.alternativeTools({\"first\":8}).edges.7","typename":"ToolEdge"}],"__typename":"ToolConnection"},"Tool:101231773864793528":{"id":"101231773864793528","path":"/activemq","slug":"activemq","title":"A message broker written in Java together with a full JMS client","votes":77,"following":false,"followers":{"type":"id","generated":true,"id":"$Tool:101231773864793528.followers","typename":"UserConnection"},"stacks":679,"githubForksCount":1355,"imageUrl":"https://img.stackshare.io/service/1062/default_08edb6f82e2c79424efc1e297ab096e50acd8e0b.jpg","thumbRetinaUrl":"https://img.stackshare.io/service/1062/thumb_retina_08edb6f82e2c79424efc1e297ab096e50acd8e0b.jpg","name":"ActiveMQ","description":"Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while fully supporting JMS 1.1 and J2EE 1.4. Apache ActiveMQ is released under the Apache 2.0 License.","contactEnabled":false,"contactButtonText":"Monitor ActiveMQ metrics and traces with Epsagon","contactFlow":{"type":"json","json":{"links":[{"url":"https://epsagon.com/try-epsagon/?utm_source=Advertisement&utm_medium=ppc&utm_campaign=StackShare&utm_term=ActiveMQ","type":"website"}],"steps":["direct_link"]}},"pros":{"type":"id","generated":true,"id":"$Tool:101231773864793528.pros","typename":"ReasonConnection"},"cons":{"type":"id","generated":true,"id":"$Tool:101231773864793528.cons","typename":"ReasonConnection"},"verified":false,"canonicalUrl":"/activemq","fans":1347,"followContext":null,"__typename":"Tool","stackDecisionsWithAlternatives({\"first\":2})":{"type":"id","generated":true,"id":"$Tool:101231773864793528.stackDecisionsWithAlternatives({\"first\":2})","typename":"StackDecisionConnection"}},"$Tool:101231773864793528.followers":{"count":1194,"__typename":"UserConnection"},"Reason:101978469381691683":{"id":"101978469381691683","upvoted":false,"upvotesCount":18,"text":"Easy to use","__typename":"Reason"},"$Tool:101231773864793528.pros.edges.0":{"node":{"type":"id","generated":false,"id":"Reason:101978469381691683","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469381977910":{"id":"101978469381977910","upvoted":false,"upvotesCount":14,"text":"Open source","__typename":"Reason"},"$Tool:101231773864793528.pros.edges.1":{"node":{"type":"id","generated":false,"id":"Reason:101978469381977910","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469381893173":{"id":"101978469381893173","upvoted":false,"upvotesCount":13,"text":"Efficient","__typename":"Reason"},"$Tool:101231773864793528.pros.edges.2":{"node":{"type":"id","generated":false,"id":"Reason:101978469381893173","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469714171039":{"id":"101978469714171039","upvoted":false,"upvotesCount":10,"text":"JMS compliant","__typename":"Reason"},"$Tool:101231773864793528.pros.edges.3":{"node":{"type":"id","generated":false,"id":"Reason:101978469714171039","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469715346011":{"id":"101978469715346011","upvoted":false,"upvotesCount":6,"text":"High Availability","__typename":"Reason"},"$Tool:101231773864793528.pros.edges.4":{"node":{"type":"id","generated":false,"id":"Reason:101978469715346011","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469714761084":{"id":"101978469714761084","upvoted":false,"upvotesCount":5,"text":"Scalable","__typename":"Reason"},"$Tool:101231773864793528.pros.edges.5":{"node":{"type":"id","generated":false,"id":"Reason:101978469714761084","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469715053176":{"id":"101978469715053176","upvoted":false,"upvotesCount":3,"text":"Persistence","__typename":"Reason"},"$Tool:101231773864793528.pros.edges.6":{"node":{"type":"id","generated":false,"id":"Reason:101978469715053176","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978470019386708":{"id":"101978470019386708","upvoted":false,"upvotesCount":3,"text":"Support XA (distributed transactions)","__typename":"Reason"},"$Tool:101231773864793528.pros.edges.7":{"node":{"type":"id","generated":false,"id":"Reason:101978470019386708","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469714466062":{"id":"101978469714466062","upvoted":false,"upvotesCount":3,"text":"Distributed Network of brokers","__typename":"Reason"},"$Tool:101231773864793528.pros.edges.8":{"node":{"type":"id","generated":false,"id":"Reason:101978469714466062","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:105821196086640825":{"id":"105821196086640825","upvoted":false,"upvotesCount":1,"text":"Highly configurable","__typename":"Reason"},"$Tool:101231773864793528.pros.edges.9":{"node":{"type":"id","generated":false,"id":"Reason:105821196086640825","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:102967648779121524":{"id":"102967648779121524","upvoted":false,"upvotesCount":1,"text":"Docker delievery","__typename":"Reason"},"$Tool:101231773864793528.pros.edges.10":{"node":{"type":"id","generated":false,"id":"Reason:102967648779121524","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:105668211223525842":{"id":"105668211223525842","upvoted":false,"upvotesCount":0,"text":"RabbitMQ","__typename":"Reason"},"$Tool:101231773864793528.pros.edges.11":{"node":{"type":"id","generated":false,"id":"Reason:105668211223525842","typename":"Reason"},"__typename":"ReasonEdge"},"$Tool:101231773864793528.pros":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231773864793528.pros.edges.0","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864793528.pros.edges.1","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864793528.pros.edges.2","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864793528.pros.edges.3","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864793528.pros.edges.4","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864793528.pros.edges.5","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864793528.pros.edges.6","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864793528.pros.edges.7","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864793528.pros.edges.8","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864793528.pros.edges.9","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864793528.pros.edges.10","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864793528.pros.edges.11","typename":"ReasonEdge"}],"__typename":"ReasonConnection"},"Reason:109434695568502598":{"id":"109434695568502598","upvoted":false,"upvotesCount":1,"text":"ONLY Vertically Scalable","__typename":"Reason"},"$Tool:101231773864793528.cons.edges.0":{"node":{"type":"id","generated":false,"id":"Reason:109434695568502598","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:105626887068236672":{"id":"105626887068236672","upvoted":false,"upvotesCount":1,"text":"Support","__typename":"Reason"},"$Tool:101231773864793528.cons.edges.1":{"node":{"type":"id","generated":false,"id":"Reason:105626887068236672","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:105821194958936100":{"id":"105821194958936100","upvoted":false,"upvotesCount":1,"text":"Low resilience to exceptions and interruptions","__typename":"Reason"},"$Tool:101231773864793528.cons.edges.2":{"node":{"type":"id","generated":false,"id":"Reason:105821194958936100","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:105821192571407188":{"id":"105821192571407188","upvoted":false,"upvotesCount":1,"text":"Difficult to scale","__typename":"Reason"},"$Tool:101231773864793528.cons.edges.3":{"node":{"type":"id","generated":false,"id":"Reason:105821192571407188","typename":"Reason"},"__typename":"ReasonEdge"},"$Tool:101231773864793528.cons":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231773864793528.cons.edges.0","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864793528.cons.edges.1","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864793528.cons.edges.2","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864793528.cons.edges.3","typename":"ReasonEdge"}],"__typename":"ReasonConnection"},"User:101515442899358368":{"id":"101515442899358368","username":"sathishbabu96","title":null,"companyName":null,"imageUrl":"https://img.stackshare.io/user/281646/default_78d98829db1d8f16625b47f1a5accf779944a2f5.jpeg","thumbUrl":"https://img.stackshare.io/user/281646/thumb_78d98829db1d8f16625b47f1a5accf779944a2f5.jpeg","displayName":"sathishbabu96","__typename":"User"},"StackDecision:102696946328217936":{"user":{"type":"id","generated":false,"id":"User:101515442899358368","typename":"User"},"company":null,"link":null,"publicId":"102696946328217936","publishedAt":"2019-02-11T23:24:00Z","id":"102696946328217936","htmlContent":"<p>I want to choose Message Queue with the following features - Highly Available, Distributed, Scalable, Monitoring. I have <span class=\"tool\">RabbitMQ</span>, <span class=\"tool\">ActiveMQ</span>, <span class=\"tool\">Kafka</span> and <span class=\"tool\">Apache RocketMQ</span> in mind. But I am confused which one to choose.</p>","viewCount":296536,"upvotesCount":4,"services":[{"type":"id","generated":false,"id":"Tool:101231775910695464","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773865214260","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773864793528","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773864300849","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"Tool:101231775910695464":{"id":"101231775910695464","name":"Apache RocketMQ","slug":"rocketmq","title":"Open source distributed messaging and streaming data platform","verified":false,"imageUrl":"https://img.stackshare.io/service/5066/o-y51F77_400x400.jpg","canonicalUrl":"/rocketmq","path":"/rocketmq","votes":8,"fans":187,"stacks":41,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773864300849":{"id":"101231773864300849","name":"RabbitMQ","slug":"rabbitmq","title":"Open source multiprotocol messaging broker","verified":false,"imageUrl":"https://img.stackshare.io/service/1061/default_df93e9a30d27519161b39d8c1d5c223c1642d187.jpg","canonicalUrl":"/rabbitmq","path":"/rabbitmq","votes":522,"fans":19264,"stacks":18402,"following":false,"followContext":null,"__typename":"Tool","followers":{"type":"id","generated":true,"id":"$Tool:101231773864300849.followers","typename":"UserConnection"},"githubForksCount":3763,"thumbRetinaUrl":"https://img.stackshare.io/service/1061/thumb_retina_df93e9a30d27519161b39d8c1d5c223c1642d187.jpg","description":"RabbitMQ gives your applications a common platform to send and receive messages, and your messages a safe place to live until received.","contactEnabled":true,"contactButtonText":"Monitor RabbitMQ Metrics In Real-Time With Datadog","contactFlow":{"type":"json","json":{"links":[{"url":"https://www.datadoghq.com/dg/monitor/ts/rabbitmq-benefits-ts/?utm_source=advertisement&utm_medium=review-site&utm_campaign=dg-stackshare-coreplatform-ww-rabbitmq-tshirt","type":"website"}],"steps":["direct_link"]}},"pros":{"type":"id","generated":true,"id":"$Tool:101231773864300849.pros","typename":"ReasonConnection"},"cons":{"type":"id","generated":true,"id":"$Tool:101231773864300849.cons","typename":"ReasonConnection"},"stackDecisionsWithAlternatives({\"first\":2})":{"type":"id","generated":true,"id":"$Tool:101231773864300849.stackDecisionsWithAlternatives({\"first\":2})","typename":"StackDecisionConnection"}},"$Tool:101231773864793528.stackDecisionsWithAlternatives({\"first\":2}).edges.0":{"node":{"type":"id","generated":false,"id":"StackDecision:102696946328217936","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"User:101232130653511287":{"id":"101232130653511287","username":"NakWarsii","title":"software developer","companyName":"klingelnberg","imageUrl":"https://img.stackshare.io/user/272496/default_802ec934391100d253f91261a33cbee5faf7f997.png","thumbUrl":"https://img.stackshare.io/user/272496/thumb_802ec934391100d253f91261a33cbee5faf7f997.png","displayName":"Naushad Warsi","__typename":"User"},"StackDecision:101583994929104325":{"user":{"type":"id","generated":false,"id":"User:101232130653511287","typename":"User"},"company":null,"link":null,"publicId":"101583994929104325","publishedAt":"2019-02-13T09:05:00Z","id":"101583994929104325","htmlContent":"<p>I use <span class=\"tool\">ActiveMQ</span> because \r\n<span class=\"tool\">RabbitMQ</span> have stopped giving the support for AMQP 1.0 or above version and the earlier version of AMQP doesn't give the functionality to support OAuth.</p>\r\n\r\n<p>If OAuth is not required and we can go with AMQP 0.9 then i still recommend rabbitMq. </p>","viewCount":694644,"upvotesCount":1,"services":[{"type":"id","generated":false,"id":"Tool:101231773864793528","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773864300849","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"$Tool:101231773864793528.stackDecisionsWithAlternatives({\"first\":2}).edges.1":{"node":{"type":"id","generated":false,"id":"StackDecision:101583994929104325","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"$Tool:101231773864793528.stackDecisionsWithAlternatives({\"first\":2})":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231773864793528.stackDecisionsWithAlternatives({\"first\":2}).edges.0","typename":"StackDecisionEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864793528.stackDecisionsWithAlternatives({\"first\":2}).edges.1","typename":"StackDecisionEdge"}],"__typename":"StackDecisionConnection"},"$Tool:101231773865214260.alternativeTools({\"first\":8}).edges.0":{"node":{"type":"id","generated":false,"id":"Tool:101231773864793528","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231773864300849.followers":{"count":16094,"__typename":"UserConnection"},"Reason:101978468360040242":{"id":"101978468360040242","upvoted":false,"upvotesCount":232,"text":"It's fast and it works with good metrics/monitoring","__typename":"Reason"},"$Tool:101231773864300849.pros.edges.0":{"node":{"type":"id","generated":false,"id":"Reason:101978468360040242","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468848957134":{"id":"101978468848957134","upvoted":false,"upvotesCount":79,"text":"Ease of configuration","__typename":"Reason"},"$Tool:101231773864300849.pros.edges.1":{"node":{"type":"id","generated":false,"id":"Reason:101978468848957134","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468784863241":{"id":"101978468784863241","upvoted":false,"upvotesCount":58,"text":"I like the admin interface","__typename":"Reason"},"$Tool:101231773864300849.pros.edges.2":{"node":{"type":"id","generated":false,"id":"Reason:101978468784863241","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469086062223":{"id":"101978469086062223","upvoted":false,"upvotesCount":50,"text":"Easy to set-up and start with","__typename":"Reason"},"$Tool:101231773864300849.pros.edges.3":{"node":{"type":"id","generated":false,"id":"Reason:101978469086062223","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469440675701":{"id":"101978469440675701","upvoted":false,"upvotesCount":20,"text":"Durable","__typename":"Reason"},"$Tool:101231773864300849.pros.edges.4":{"node":{"type":"id","generated":false,"id":"Reason:101978469440675701","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469353785680":{"id":"101978469353785680","upvoted":false,"upvotesCount":18,"text":"Standard protocols","__typename":"Reason"},"$Tool:101231773864300849.pros.edges.5":{"node":{"type":"id","generated":false,"id":"Reason:101978469353785680","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469029912733":{"id":"101978469029912733","upvoted":false,"upvotesCount":18,"text":"Intuitive work through python","__typename":"Reason"},"$Tool:101231773864300849.pros.edges.6":{"node":{"type":"id","generated":false,"id":"Reason:101978469029912733","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469369367071":{"id":"101978469369367071","upvoted":false,"upvotesCount":10,"text":"Written primarily in Erlang","__typename":"Reason"},"$Tool:101231773864300849.pros.edges.7":{"node":{"type":"id","generated":false,"id":"Reason:101978469369367071","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469483717891":{"id":"101978469483717891","upvoted":false,"upvotesCount":8,"text":"Simply superb","__typename":"Reason"},"$Tool:101231773864300849.pros.edges.8":{"node":{"type":"id","generated":false,"id":"Reason:101978469483717891","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469384062924":{"id":"101978469384062924","upvoted":false,"upvotesCount":6,"text":"Completeness of messaging patterns","__typename":"Reason"},"$Tool:101231773864300849.pros.edges.9":{"node":{"type":"id","generated":false,"id":"Reason:101978469384062924","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978470027996748":{"id":"101978470027996748","upvoted":false,"upvotesCount":3,"text":"Reliable","__typename":"Reason"},"$Tool:101231773864300849.pros.edges.10":{"node":{"type":"id","generated":false,"id":"Reason:101978470027996748","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469483398732":{"id":"101978469483398732","upvoted":false,"upvotesCount":3,"text":"Scales to 1 million messages per second","__typename":"Reason"},"$Tool:101231773864300849.pros.edges.11":{"node":{"type":"id","generated":false,"id":"Reason:101978469483398732","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469825713110":{"id":"101978469825713110","upvoted":false,"upvotesCount":2,"text":"Better than most traditional queue based message broker","__typename":"Reason"},"$Tool:101231773864300849.pros.edges.12":{"node":{"type":"id","generated":false,"id":"Reason:101978469825713110","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469660950949":{"id":"101978469660950949","upvoted":false,"upvotesCount":2,"text":"Distributed","__typename":"Reason"},"$Tool:101231773864300849.pros.edges.13":{"node":{"type":"id","generated":false,"id":"Reason:101978469660950949","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103852910986718895":{"id":"103852910986718895","upvoted":false,"upvotesCount":2,"text":"Supports AMQP","__typename":"Reason"},"$Tool:101231773864300849.pros.edges.14":{"node":{"type":"id","generated":false,"id":"Reason:103852910986718895","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103356433281103920":{"id":"103356433281103920","upvoted":false,"upvotesCount":1,"text":"Inubit Integration","__typename":"Reason"},"$Tool:101231773864300849.pros.edges.15":{"node":{"type":"id","generated":false,"id":"Reason:103356433281103920","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:109268478407509392":{"id":"109268478407509392","upvoted":false,"upvotesCount":1,"text":"Open-source","__typename":"Reason"},"$Tool:101231773864300849.pros.edges.16":{"node":{"type":"id","generated":false,"id":"Reason:109268478407509392","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:107241075139305376":{"id":"107241075139305376","upvoted":false,"upvotesCount":1,"text":"Delayed messages","__typename":"Reason"},"$Tool:101231773864300849.pros.edges.17":{"node":{"type":"id","generated":false,"id":"Reason:107241075139305376","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:105978495698253062":{"id":"105978495698253062","upvoted":false,"upvotesCount":1,"text":"Supports MQTT","__typename":"Reason"},"$Tool:101231773864300849.pros.edges.18":{"node":{"type":"id","generated":false,"id":"Reason:105978495698253062","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469483199214":{"id":"101978469483199214","upvoted":false,"upvotesCount":1,"text":"Runs on Open Telecom Platform","__typename":"Reason"},"$Tool:101231773864300849.pros.edges.19":{"node":{"type":"id","generated":false,"id":"Reason:101978469483199214","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103719529247269292":{"id":"103719529247269292","upvoted":false,"upvotesCount":1,"text":"High performance","__typename":"Reason"},"$Tool:101231773864300849.pros.edges.20":{"node":{"type":"id","generated":false,"id":"Reason:103719529247269292","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978470199011425":{"id":"101978470199011425","upvoted":false,"upvotesCount":1,"text":"Reliability","__typename":"Reason"},"$Tool:101231773864300849.pros.edges.21":{"node":{"type":"id","generated":false,"id":"Reason:101978470199011425","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469744513547":{"id":"101978469744513547","upvoted":false,"upvotesCount":1,"text":"Clusterable","__typename":"Reason"},"$Tool:101231773864300849.pros.edges.22":{"node":{"type":"id","generated":false,"id":"Reason:101978469744513547","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469948565341":{"id":"101978469948565341","upvoted":false,"upvotesCount":1,"text":"Clear documentation with different scripting language","__typename":"Reason"},"$Tool:101231773864300849.pros.edges.23":{"node":{"type":"id","generated":false,"id":"Reason:101978469948565341","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978470004665914":{"id":"101978470004665914","upvoted":false,"upvotesCount":1,"text":"Great ui","__typename":"Reason"},"$Tool:101231773864300849.pros.edges.24":{"node":{"type":"id","generated":false,"id":"Reason:101978470004665914","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978470196131264":{"id":"101978470196131264","upvoted":false,"upvotesCount":1,"text":"Better routing system","__typename":"Reason"},"$Tool:101231773864300849.pros.edges.25":{"node":{"type":"id","generated":false,"id":"Reason:101978470196131264","typename":"Reason"},"__typename":"ReasonEdge"},"$Tool:101231773864300849.pros":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231773864300849.pros.edges.0","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864300849.pros.edges.1","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864300849.pros.edges.2","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864300849.pros.edges.3","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864300849.pros.edges.4","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864300849.pros.edges.5","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864300849.pros.edges.6","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864300849.pros.edges.7","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864300849.pros.edges.8","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864300849.pros.edges.9","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864300849.pros.edges.10","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864300849.pros.edges.11","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864300849.pros.edges.12","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864300849.pros.edges.13","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864300849.pros.edges.14","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864300849.pros.edges.15","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864300849.pros.edges.16","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864300849.pros.edges.17","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864300849.pros.edges.18","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864300849.pros.edges.19","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864300849.pros.edges.20","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864300849.pros.edges.21","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864300849.pros.edges.22","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864300849.pros.edges.23","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864300849.pros.edges.24","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864300849.pros.edges.25","typename":"ReasonEdge"}],"__typename":"ReasonConnection"},"Reason:101978469859607893":{"id":"101978469859607893","upvoted":false,"upvotesCount":9,"text":"Too complicated cluster/HA config and management","__typename":"Reason"},"$Tool:101231773864300849.cons.edges.0":{"node":{"type":"id","generated":false,"id":"Reason:101978469859607893","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469825855422":{"id":"101978469825855422","upvoted":false,"upvotesCount":6,"text":"Needs Erlang runtime. Need ops good with Erlang runtime","__typename":"Reason"},"$Tool:101231773864300849.cons.edges.1":{"node":{"type":"id","generated":false,"id":"Reason:101978469825855422","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469766006663":{"id":"101978469766006663","upvoted":false,"upvotesCount":5,"text":"Configuration must be done first, not by your code","__typename":"Reason"},"$Tool:101231773864300849.cons.edges.2":{"node":{"type":"id","generated":false,"id":"Reason:101978469766006663","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978470219114303":{"id":"101978470219114303","upvoted":false,"upvotesCount":4,"text":"Slow","__typename":"Reason"},"$Tool:101231773864300849.cons.edges.3":{"node":{"type":"id","generated":false,"id":"Reason:101978470219114303","typename":"Reason"},"__typename":"ReasonEdge"},"$Tool:101231773864300849.cons":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231773864300849.cons.edges.0","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864300849.cons.edges.1","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864300849.cons.edges.2","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864300849.cons.edges.3","typename":"ReasonEdge"}],"__typename":"ReasonConnection"},"User:101232126867692719":{"id":"101232126867692719","username":"jtcunning","title":"Operations Engineer","companyName":"Sentry","imageUrl":"https://img.stackshare.io/user/265010/default_aca380c06539c567ed5bc2f7523ead79ac271e8d.jpg","thumbUrl":"https://img.stackshare.io/user/265010/thumb_aca380c06539c567ed5bc2f7523ead79ac271e8d.jpg","displayName":"James Cunningham","__typename":"User"},"StackDecision:101031322402962743":{"user":{"type":"id","generated":false,"id":"User:101232126867692719","typename":"User"},"company":{"type":"id","generated":true,"id":"$StackDecision:101031322402962743.company","typename":"Company"},"link":{"type":"id","generated":true,"id":"$StackDecision:101031322402962743.link","typename":"Link"},"publicId":"101031322402962743","publishedAt":"2018-09-13T08:40:00Z","id":"101031322402962743","htmlContent":"<p>As Sentry runs throughout the day, there are about 50 different offline tasks that we execute—anything from “process this event, pretty please” to “send all of these cool people some emails.” There are some that we execute once a day and some that execute thousands per second.</p>\n\n<p>Managing this variety requires a reliably high-throughput message-passing technology. We use <span class=\"tool\">Celery</span>'s <span class=\"tool\">RabbitMQ</span> implementation, and we stumbled upon a great feature called Federation that allows us to partition our task queue across any number of RabbitMQ servers and gives us the confidence that, if any single server gets backlogged, others will pitch in and distribute some of the backlogged tasks to their consumers.</p>\n\n<p><span class=\"topic\">#MessageQueue</span></p>","viewCount":1472725,"upvotesCount":18,"services":[{"type":"id","generated":false,"id":"Tool:101231773871944512","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773864300849","typename":"Tool"}],"topics":[{"type":"id","generated":false,"id":"Topic:101231988723435153","typename":"Topic"}],"__typename":"StackDecision"},"$StackDecision:101031322402962743.company":{"imageUrl":"https://img.stackshare.io/company/302/default_06242664e4f521d5a00acfb13df35b22e7b69fda.jpg","thumbUrl":"https://img.stackshare.io/company/302/thumb_06242664e4f521d5a00acfb13df35b22e7b69fda.jpg","name":"Sentry","path":"/companies/sentry","features":[],"__typename":"Company"},"$StackDecision:101031322402962743.link":{"url":"https://stackshare.io/sentry/how-sentry-receives-20-billion-events-per-month-while-preparing-to-handle-twice-that","title":"How Sentry Receives 20 Billion Events Per Month While Preparing to Handle Twice That - Sentry Tech Stack | StackShare","__typename":"Link"},"Tool:101231773871944512":{"id":"101231773871944512","name":"Celery","slug":"celery","title":"Distributed task queue","verified":false,"imageUrl":"https://img.stackshare.io/service/1075/celery.png","canonicalUrl":"/celery","path":"/celery","votes":279,"fans":1843,"stacks":1519,"following":false,"followContext":null,"__typename":"Tool"},"Topic:101231988723435153":{"name":"MessageQueue","id":"101231988723435153","__typename":"Topic"},"$Tool:101231773864300849.stackDecisionsWithAlternatives({\"first\":2}).edges.0":{"node":{"type":"id","generated":false,"id":"StackDecision:101031322402962743","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"User:104211572134678860":{"id":"104211572134678860","username":"ydbhondekar2407","title":"Product Manager | SaaS | Traveller","companyName":"","imageUrl":"https://img.stackshare.io/user/601091/default_de1eb7053fffbc6c76e6d2752d994e9437a7e495.jpg","thumbUrl":"https://img.stackshare.io/user/601091/thumb_de1eb7053fffbc6c76e6d2752d994e9437a7e495.jpg","displayName":"Yogesh Bhondekar","__typename":"User"},"StackDecision:104284687365973556":{"user":{"type":"id","generated":false,"id":"User:104211572134678860","typename":"User"},"company":null,"link":null,"publicId":"104284687365973556","publishedAt":"2020-06-04T08:07:26Z","id":"104284687365973556","htmlContent":"<p>Hi,\nI am building an enhanced web-conferencing app that will have a voice/video call, live chats, live notifications, live discussions, screen sharing, etc features. Ref: <span class=\"tool\">Zoom</span>.</p>\n\n<p>I need advise finalizing the tech stack for this app. I am considering below tech stack:</p>\n\n<ul>\n<li>Frontend: <span class=\"tool\">React</span></li>\n<li>Backend: <span class=\"tool\">Node.js</span></li>\n<li>Database: <span class=\"tool\">MongoDB</span></li>\n<li>IAAS: <span class=\"topic\">#AWS</span> </li>\n<li>Containers &amp; Orchestration: <span class=\"tool\">Docker</span> / <span class=\"tool\">Kubernetes</span></li>\n<li>DevOps: <span class=\"tool\">GitLab</span>, <span class=\"tool\">Terraform</span></li>\n<li>Brokers: <span class=\"tool\">Redis</span> / <span class=\"tool\">RabbitMQ</span></li>\n</ul>\n\n<p>I need advice at the platform level as to what could be considered to support concurrent video streaming seamlessly. </p>\n\n<p>Also, please suggest what could be a better tech stack for my app?</p>\n\n<p><span class=\"topic\">#SAAS</span> <span class=\"topic\">#VideoConferencing</span> <span class=\"topic\">#WebAndVideoConferencing</span> <span class=\"topic\">#zoom</span> <span class=\"topic\">#stack</span> </p>","viewCount":263144,"upvotesCount":15,"services":[{"type":"id","generated":false,"id":"Tool:101231773864300849","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773854768982","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773970332063","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773791035497","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774206661614","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773669807419","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773854388643","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773845103618","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773849098825","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231776473814866","typename":"Tool"}],"topics":[{"type":"id","generated":false,"id":"Topic:101231988867646475","typename":"Topic"},{"type":"id","generated":false,"id":"Topic:101348084782435007","typename":"Topic"},{"type":"id","generated":false,"id":"Topic:104284687361181218","typename":"Topic"},{"type":"id","generated":false,"id":"Topic:101231988688393884","typename":"Topic"},{"type":"id","generated":false,"id":"Topic:101650039563662363","typename":"Topic"},{"type":"id","generated":false,"id":"Topic:101231988907737164","typename":"Topic"}],"__typename":"StackDecision"},"Tool:101231773854768982":{"id":"101231773854768982","name":"Redis","slug":"redis","title":"Open source (BSD licensed), in-memory data structure store","verified":false,"imageUrl":"https://img.stackshare.io/service/1031/default_cbce472cd134adc6688572f999e9122b9657d4ba.png","canonicalUrl":"/redis","path":"/redis","votes":3866,"fans":47837,"stacks":52315,"following":false,"followContext":null,"__typename":"Tool","followers":{"type":"id","generated":true,"id":"$Tool:101231773854768982.followers","typename":"UserConnection"},"githubForksCount":null,"thumbRetinaUrl":"https://img.stackshare.io/service/1031/thumb_retina_cbce472cd134adc6688572f999e9122b9657d4ba.png","description":"Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache, and message broker. Redis provides data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes, and streams.","contactEnabled":true,"contactButtonText":"Deploy Redis With One Click On Linode","contactFlow":{"type":"json","json":{"links":[{"url":"http://bit.ly/3oC6qEU","type":"website"}],"steps":["direct_link"]}},"pros":{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros","typename":"ReasonConnection"},"cons":{"type":"id","generated":true,"id":"$Tool:101231773854768982.cons","typename":"ReasonConnection"},"stackDecisionsWithAlternatives({\"first\":2})":{"type":"id","generated":true,"id":"$Tool:101231773854768982.stackDecisionsWithAlternatives({\"first\":2})","typename":"StackDecisionConnection"}},"Tool:101231773970332063":{"id":"101231773970332063","name":"Terraform","slug":"terraform","title":"Describe your complete infrastructure as code and build resources across providers","verified":true,"imageUrl":"https://img.stackshare.io/service/1276/og-image-8b3e4f7d.png","canonicalUrl":"/terraform","path":"/terraform","votes":337,"fans":14122,"stacks":18951,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773791035497":{"id":"101231773791035497","name":"GitLab","slug":"gitlab","title":"Open source self-hosted Git management software","verified":true,"imageUrl":"https://img.stackshare.io/service/880/lmalkclL.png","canonicalUrl":"/gitlab","path":"/gitlab","votes":2376,"fans":53177,"stacks":53141,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231774206661614":{"id":"101231774206661614","name":"Kubernetes","slug":"kubernetes","title":"Manage a cluster of Linux containers as a single system to accelerate Dev and simplify Ops","verified":false,"imageUrl":"https://img.stackshare.io/service/1885/21_d3cvM.png","canonicalUrl":"/kubernetes","path":"/kubernetes","votes":639,"fans":51002,"stacks":49953,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773669807419":{"id":"101231773669807419","name":"Docker","slug":"docker","title":"Enterprise Container Platform for High-Velocity Innovation.","verified":true,"imageUrl":"https://img.stackshare.io/service/586/n4u37v9t_400x400.png","canonicalUrl":"/docker","path":"/docker","votes":3825,"fans":136543,"stacks":151553,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773854388643":{"id":"101231773854388643","name":"MongoDB","slug":"mongodb","title":"The database for giant ideas","verified":true,"imageUrl":"https://img.stackshare.io/service/1030/leaf-360x360.png","canonicalUrl":"/mongodb","path":"/mongodb","votes":4130,"fans":80380,"stacks":80347,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773845103618":{"id":"101231773845103618","name":"Node.js","slug":"nodejs","title":"A platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications","verified":false,"imageUrl":"https://img.stackshare.io/service/1011/n1JRsFeB_400x400.png","canonicalUrl":"/nodejs","path":"/nodejs","votes":8511,"fans":154955,"stacks":159765,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773849098825":{"id":"101231773849098825","name":"React","slug":"react","title":"A JavaScript library for building user interfaces","verified":false,"imageUrl":"https://img.stackshare.io/service/1020/OYIaJ1KK.png","canonicalUrl":"/react","path":"/react","votes":3950,"fans":136360,"stacks":143471,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231776473814866":{"id":"101231776473814866","name":"Zoom","slug":"zoom","title":"Video Conferencing, Web Conferencing, Webinars, Screen Sharing","verified":false,"imageUrl":"https://img.stackshare.io/service/6083/oD_oPSBP_400x400.jpg","canonicalUrl":"/zoom","path":"/zoom","votes":155,"fans":2367,"stacks":1609,"following":false,"followContext":null,"__typename":"Tool"},"Topic:101231988867646475":{"name":"AWS","id":"101231988867646475","__typename":"Topic"},"Topic:101348084782435007":{"name":"Stack","id":"101348084782435007","__typename":"Topic"},"Topic:104284687361181218":{"name":"Zoom","id":"104284687361181218","__typename":"Topic"},"Topic:101231988688393884":{"name":"WebAndVideoConferencing","id":"101231988688393884","__typename":"Topic"},"Topic:101650039563662363":{"name":"VideoConferencing","id":"101650039563662363","__typename":"Topic"},"Topic:101231988907737164":{"name":"SAAS","id":"101231988907737164","__typename":"Topic"},"$Tool:101231773864300849.stackDecisionsWithAlternatives({\"first\":2}).edges.1":{"node":{"type":"id","generated":false,"id":"StackDecision:104284687365973556","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"$Tool:101231773864300849.stackDecisionsWithAlternatives({\"first\":2})":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231773864300849.stackDecisionsWithAlternatives({\"first\":2}).edges.0","typename":"StackDecisionEdge"},{"type":"id","generated":true,"id":"$Tool:101231773864300849.stackDecisionsWithAlternatives({\"first\":2}).edges.1","typename":"StackDecisionEdge"}],"__typename":"StackDecisionConnection"},"$Tool:101231773865214260.alternativeTools({\"first\":8}).edges.1":{"node":{"type":"id","generated":false,"id":"Tool:101231773864300849","typename":"Tool"},"__typename":"ToolEdge"},"Tool:101231773632626053":{"id":"101231773632626053","path":"/amazon-kinesis","slug":"amazon-kinesis","title":"Store and process terabytes of data each hour from hundreds of thousands of sources","votes":9,"following":false,"followers":{"type":"id","generated":true,"id":"$Tool:101231773632626053.followers","typename":"UserConnection"},"stacks":742,"githubForksCount":null,"imageUrl":"https://img.stackshare.io/service/433/default_6bea44ee4da746fbb7c9070a7ffac9b764d1ed79.png","thumbRetinaUrl":"https://img.stackshare.io/service/433/thumb_retina_6bea44ee4da746fbb7c9070a7ffac9b764d1ed79.png","name":"Amazon Kinesis","description":"Amazon Kinesis can collect and process hundreds of gigabytes of data per second from hundreds of thousands of sources, allowing you to easily write applications that process information in real-time, from sources such as web site click-streams, marketing and financial information, manufacturing instrumentation and social media, and operational logs and metering data. ","contactEnabled":true,"contactButtonText":"Kinesis destination for data export w/LaunchDarkly","contactFlow":{"type":"json","json":{"links":[{"url":"https://launchdarkly.com/?utm_source=stackshare&utm_medium=display&utm_campaign=aodm","type":"website"}],"steps":["direct_link"]}},"pros":{"type":"id","generated":true,"id":"$Tool:101231773632626053.pros","typename":"ReasonConnection"},"cons":{"type":"id","generated":true,"id":"$Tool:101231773632626053.cons","typename":"ReasonConnection"},"verified":false,"canonicalUrl":"/amazon-kinesis","fans":708,"followContext":null,"__typename":"Tool","stackDecisionsWithAlternatives({\"first\":2})":{"type":"id","generated":true,"id":"$Tool:101231773632626053.stackDecisionsWithAlternatives({\"first\":2})","typename":"StackDecisionConnection"}},"$Tool:101231773632626053.followers":{"count":566,"__typename":"UserConnection"},"Reason:103482112489368949":{"id":"103482112489368949","upvoted":false,"upvotesCount":9,"text":"Scalable","__typename":"Reason"},"$Tool:101231773632626053.pros.edges.0":{"node":{"type":"id","generated":false,"id":"Reason:103482112489368949","typename":"Reason"},"__typename":"ReasonEdge"},"$Tool:101231773632626053.pros":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231773632626053.pros.edges.0","typename":"ReasonEdge"}],"__typename":"ReasonConnection"},"Reason:104931595111113957":{"id":"104931595111113957","upvoted":false,"upvotesCount":3,"text":"Cost","__typename":"Reason"},"$Tool:101231773632626053.cons.edges.0":{"node":{"type":"id","generated":false,"id":"Reason:104931595111113957","typename":"Reason"},"__typename":"ReasonEdge"},"$Tool:101231773632626053.cons":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231773632626053.cons.edges.0","typename":"ReasonEdge"}],"__typename":"ReasonConnection"},"User:101232084434873139":{"id":"101232084434873139","username":"praveenm","title":"Engineering Manager","companyName":"Taylor and Francis","imageUrl":"https://img.stackshare.io/user/184805/default_8f070c83259657b92042275d398fe014873e73aa.jpeg","thumbUrl":"https://img.stackshare.io/user/184805/thumb_8f070c83259657b92042275d398fe014873e73aa.jpeg","displayName":"Praveen Mooli","__typename":"User"},"StackDecision:102523983538702954":{"user":{"type":"id","generated":false,"id":"User:101232084434873139","typename":"User"},"company":null,"link":null,"publicId":"102523983538702954","publishedAt":"2019-07-29T09:17:15Z","id":"102523983538702954","htmlContent":"<p>We are in the process of building a modern content platform to deliver our content through various channels. We decided to go with Microservices architecture as we wanted scale. Microservice architecture style is an approach to developing an application as a suite of small independently deployable services built around specific business capabilities. You can gain modularity, extensive parallelism and cost-effective scaling by deploying services across many distributed servers. Microservices modularity facilitates independent updates/deployments, and helps to avoid single point of failure, which can help prevent large-scale outages.\nWe also decided to use Event Driven Architecture pattern which is a popular distributed asynchronous architecture pattern used to produce highly scalable applications. The event-driven architecture is made up of highly decoupled, single-purpose event processing components that asynchronously receive and process events.</p>\n\n<p>To build our <span class=\"topic\">#Backend</span> capabilities we decided to use the following:\n1. <span class=\"topic\">#Microservices</span> - <span class=\"tool\">Java</span> with <span class=\"tool\">Spring Boot</span> , <span class=\"tool\">Node.js</span> with <span class=\"tool\">ExpressJS</span> and <span class=\"tool\">Python</span> with <span class=\"tool\">Flask</span> \n2. <span class=\"topic\">#Eventsourcingframework</span> - <span class=\"tool\">Amazon Kinesis</span> , <span class=\"tool\">Amazon Kinesis Firehose</span> , <span class=\"tool\">Amazon SNS</span> , <span class=\"tool\">Amazon SQS</span>, <span class=\"tool\">AWS Lambda</span> \n3. <span class=\"topic\">#Data</span> - <span class=\"tool\">Amazon RDS</span> , <span class=\"tool\">Amazon DynamoDB</span> , <span class=\"tool\">Amazon S3</span> , <span class=\"tool\">MongoDB Atlas</span> </p>\n\n<p>To build <span class=\"topic\">#Webapps</span> we decided to use <span class=\"tool\">Angular 2</span> with <span class=\"tool\">RxJS</span> </p>\n\n<p><span class=\"topic\">#Devops</span> - <span class=\"tool\">GitHub</span> , <span class=\"tool\">Travis CI</span> , <span class=\"tool\">Terraform</span> , <span class=\"tool\">Docker</span> , <span class=\"tool\">Serverless</span> </p>","viewCount":2603424,"upvotesCount":18,"services":[{"type":"id","generated":false,"id":"Tool:101231776297440807","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773838011785","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774666323920","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773845103618","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773920953695","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773837179153","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773840406851","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773632626053","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231775186090046","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773618592622","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773618167288","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774215979427","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231775174055327","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774170220209","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773410696721","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773636491087","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773970332063","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773669807419","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231775927452566","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773523090140","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773615579247","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773409399220","typename":"Tool"}],"topics":[{"type":"id","generated":false,"id":"Topic:101231988901054690","typename":"Topic"},{"type":"id","generated":false,"id":"Topic:101231988911787479","typename":"Topic"},{"type":"id","generated":false,"id":"Topic:101348076767785781","typename":"Topic"},{"type":"id","generated":false,"id":"Topic:101348393685875978","typename":"Topic"},{"type":"id","generated":false,"id":"Topic:101231988857851707","typename":"Topic"},{"type":"id","generated":false,"id":"Topic:101910501640308173","typename":"Topic"}],"__typename":"StackDecision"},"Tool:101231776297440807":{"id":"101231776297440807","name":"MongoDB Atlas","slug":"mongodb-atlas","title":"Deploy and scale a MongoDB cluster in the cloud with just a few clicks","verified":true,"imageUrl":"https://img.stackshare.io/service/5739/atlas-360x360.png","canonicalUrl":"/mongodb-atlas","path":"/mongodb-atlas","votes":32,"fans":1035,"stacks":750,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773838011785":{"id":"101231773838011785","name":"Java","slug":"java","title":"A concurrent, class-based, object-oriented, language specifically designed to have as few implementation dependencies as possible","verified":false,"imageUrl":"https://img.stackshare.io/service/995/K85ZWV2F.png","canonicalUrl":"/java","path":"/java","votes":3670,"fans":100817,"stacks":111204,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231774666323920":{"id":"101231774666323920","name":"Spring Boot","slug":"spring-boot","title":"Create Spring-powered, production-grade applications and services with absolute minimum fuss","verified":false,"imageUrl":"https://img.stackshare.io/service/2927/nPzvMuo2_400x400.png","canonicalUrl":"/spring-boot","path":"/spring-boot","votes":994,"fans":23153,"stacks":21665,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773920953695":{"id":"101231773920953695","name":"ExpressJS","slug":"expressjs","title":"Sinatra inspired web development framework for node.js -- insanely fast, flexible, and simple","verified":false,"imageUrl":"https://img.stackshare.io/service/1163/hashtag.png","canonicalUrl":"/expressjs","path":"/expressjs","votes":1591,"fans":24732,"stacks":26519,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773837179153":{"id":"101231773837179153","name":"Python","slug":"python","title":"A clear and powerful object-oriented programming language, comparable to Perl, Ruby, Scheme, or Java.","verified":false,"imageUrl":"https://img.stackshare.io/service/993/pUBY5pVj.png","canonicalUrl":"/python","path":"/python","votes":6656,"fans":189609,"stacks":195706,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773840406851":{"id":"101231773840406851","name":"Flask","slug":"flask","title":"A microframework for Python based on Werkzeug, Jinja 2 and good intentions","verified":false,"imageUrl":"https://img.stackshare.io/service/1001/default_6d109315b60108628b7cd3e159b84645c31ef0e2.png","canonicalUrl":"/flask","path":"/flask","votes":1592,"fans":17901,"stacks":17088,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231775186090046":{"id":"101231775186090046","name":"Amazon Kinesis Firehose","slug":"amazon-kinesis-firehose","title":"Simple and Scalable Data Ingestion","verified":false,"imageUrl":"https://img.stackshare.io/service/3770/amazon-kinesis.png","canonicalUrl":"/amazon-kinesis-firehose","path":"/amazon-kinesis-firehose","votes":0,"fans":222,"stacks":250,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773618592622":{"id":"101231773618592622","name":"Amazon SNS","slug":"amazon-sns","title":"Fully managed push messaging service","verified":false,"imageUrl":"https://img.stackshare.io/service/396/amazon-sns.png","canonicalUrl":"/amazon-sns","path":"/amazon-sns","votes":18,"fans":1431,"stacks":1325,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773618167288":{"id":"101231773618167288","name":"Amazon SQS","slug":"amazon-sqs","title":"Fully managed message queuing service","verified":false,"imageUrl":"https://img.stackshare.io/service/395/amazon-sqs.png","canonicalUrl":"/amazon-sqs","path":"/amazon-sqs","votes":167,"fans":2337,"stacks":3049,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231774215979427":{"id":"101231774215979427","name":"AWS Lambda","slug":"aws-lambda","title":"Automatically run code in response to modifications to objects in Amazon S3 buckets, messages in Kinesis streams, or updates in DynamoDB","verified":false,"imageUrl":"https://img.stackshare.io/service/1909/aws-lambda.png","canonicalUrl":"/aws-lambda","path":"/aws-lambda","votes":427,"fans":19857,"stacks":22085,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231775174055327":{"id":"101231775174055327","name":"Angular","slug":"angular","title":"A platform for building mobile and desktop web applications","verified":false,"imageUrl":"https://img.stackshare.io/service/3745/cb8U-gL6_400x400.jpg","canonicalUrl":"/angular","path":"/angular","votes":454,"fans":4357,"stacks":1507,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231774170220209":{"id":"101231774170220209","name":"RxJS","slug":"rxjs","title":"The Reactive Extensions for JavaScript","verified":false,"imageUrl":"https://img.stackshare.io/service/1796/984368.png","canonicalUrl":"/rxjs","path":"/rxjs","votes":19,"fans":875,"stacks":2667,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773410696721":{"id":"101231773410696721","name":"GitHub","slug":"github","title":"Powerful collaboration, review, and code management for open source and private development projects","verified":true,"imageUrl":"https://img.stackshare.io/service/27/default_869c34d29acc794d60ecdd5d2b5bfc042a80a4ec.jpg","canonicalUrl":"/github","path":"/github","votes":10238,"fans":236413,"stacks":239062,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773636491087":{"id":"101231773636491087","name":"Travis CI","slug":"travis-ci","title":"A hosted continuous integration service for open source and private projects","verified":true,"imageUrl":"https://img.stackshare.io/service/460/Lu6cGu0z_400x400.png","canonicalUrl":"/travis-ci","path":"/travis-ci","votes":1751,"fans":8292,"stacks":11086,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231775927452566":{"id":"101231775927452566","name":"Serverless","slug":"serverless","title":"The most widely-adopted toolkit for building serverless applications","verified":false,"imageUrl":"https://img.stackshare.io/service/5095/serverless-logo.png","canonicalUrl":"/serverless","path":"/serverless","votes":23,"fans":1386,"stacks":1808,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773523090140":{"id":"101231773523090140","name":"Amazon RDS","slug":"amazon-rds-for-mysql","title":"Set up, operate, and scale a relational database in the cloud.","verified":false,"imageUrl":"https://img.stackshare.io/service/232/amazon-rds.png","canonicalUrl":"/amazon-rds-for-mysql","path":"/amazon-rds-for-mysql","votes":759,"fans":12013,"stacks":15003,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773615579247":{"id":"101231773615579247","name":"Amazon DynamoDB","slug":"amazon-dynamodb","title":"Fully managed NoSQL database service","verified":false,"imageUrl":"https://img.stackshare.io/service/389/amazon-dynamodb.png","canonicalUrl":"/amazon-dynamodb","path":"/amazon-dynamodb","votes":195,"fans":3796,"stacks":4645,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773409399220":{"id":"101231773409399220","name":"Amazon S3","slug":"amazon-s3","title":"Store and retrieve any amount of data, at any time, from anywhere on the web","verified":false,"imageUrl":"https://img.stackshare.io/service/25/amazon-s3.png","canonicalUrl":"/amazon-s3","path":"/amazon-s3","votes":2046,"fans":42638,"stacks":49153,"following":false,"followContext":null,"__typename":"Tool"},"Topic:101231988901054690":{"name":"Backend","id":"101231988901054690","__typename":"Topic"},"Topic:101231988911787479":{"name":"Microservices","id":"101231988911787479","__typename":"Topic"},"Topic:101348076767785781":{"name":"Eventsourcingframework","id":"101348076767785781","__typename":"Topic"},"Topic:101348393685875978":{"name":"Webapps","id":"101348393685875978","__typename":"Topic"},"Topic:101231988857851707":{"name":"Devops","id":"101231988857851707","__typename":"Topic"},"Topic:101910501640308173":{"name":"Data","id":"101910501640308173","__typename":"Topic"},"$Tool:101231773632626053.stackDecisionsWithAlternatives({\"first\":2}).edges.0":{"node":{"type":"id","generated":false,"id":"StackDecision:102523983538702954","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"User:101232005755435697":{"id":"101232005755435697","username":"jkodumal","title":"CTO","companyName":"LaunchDarkly","imageUrl":"https://img.stackshare.io/user/35058/default_93cffdd3de7457354ebd67ed848dcc0293db817f.jpeg","thumbUrl":"https://img.stackshare.io/user/35058/thumb_93cffdd3de7457354ebd67ed848dcc0293db817f.jpeg","displayName":"John Kodumal","__typename":"User"},"StackDecision:101738839992901798":{"user":{"type":"id","generated":false,"id":"User:101232005755435697","typename":"User"},"company":{"type":"id","generated":true,"id":"$StackDecision:101738839992901798.company","typename":"Company"},"link":{"type":"id","generated":true,"id":"$StackDecision:101738839992901798.link","typename":"Link"},"publicId":"101738839992901798","publishedAt":"2019-03-12T17:24:56Z","id":"101738839992901798","htmlContent":"<p>As we've evolved or added additional infrastructure to our stack, we've biased towards managed services. Most new backing stores are <span class=\"tool\">Amazon RDS</span> instances now. We do use self-managed <span class=\"tool\">PostgreSQL</span> with <span class=\"tool\">TimescaleDB</span> for time-series data—this is made HA with the use of <span class=\"tool\">Patroni</span> and <span class=\"tool\">Consul</span>.</p>\n\n<p>We also use managed <span class=\"tool\">Amazon ElastiCache</span> instances instead of spinning up <span class=\"tool\">Amazon EC2</span> instances to run <span class=\"tool\">Redis</span> workloads, as well as shifting to <span class=\"tool\">Amazon Kinesis</span> instead of <span class=\"tool\">Kafka</span>.</p>","viewCount":1840657,"upvotesCount":17,"services":[{"type":"id","generated":false,"id":"Tool:101231773523090140","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773853533403","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231776836579482","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231776881984346","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773733721900","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773616958547","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773405612798","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773854768982","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773632626053","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773865214260","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"$StackDecision:101738839992901798.company":{"imageUrl":"https://img.stackshare.io/company/6182/default_2119cf7ac922b781704952f39f729d1cc1bd3692.png","thumbUrl":"https://img.stackshare.io/company/6182/thumb_2119cf7ac922b781704952f39f729d1cc1bd3692.png","name":"LaunchDarkly","path":"/companies/launchdarkly","features":[],"__typename":"Company"},"$StackDecision:101738839992901798.link":{"url":"https://stackshare.io/launchdarkly/redux-scaling-launchdarkly-from-4-to-200-billion-feature-flags-daily","title":"Redux: Scaling LaunchDarkly from 4 to 200 billion feature flags daily - LaunchDarkly Tech Stack | StackShare","__typename":"Link"},"Tool:101231773853533403":{"id":"101231773853533403","name":"PostgreSQL","slug":"postgresql","title":"A powerful, open source object-relational database system","verified":false,"imageUrl":"https://img.stackshare.io/service/1028/ASOhU5xJ.png","canonicalUrl":"/postgresql","path":"/postgresql","votes":3467,"fans":80046,"stacks":83748,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231776836579482":{"id":"101231776836579482","name":"TimescaleDB","slug":"timescaledb","title":"Scalable and reliable time-series SQL database optimized for fast ingest and complex queries. Built on PostgreSQL.","verified":true,"imageUrl":"https://img.stackshare.io/service/6765/20190510_Timescale_Logo_Tiger.png","canonicalUrl":"/timescaledb","path":"/timescaledb","votes":41,"fans":373,"stacks":186,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231776881984346":{"id":"101231776881984346","name":"Patroni","slug":"patroni","title":"A Template for PostgreSQL HA with ZooKeeper, Etcd, or Consul","verified":true,"imageUrl":"https://img.stackshare.io/no-img-open-source.png","canonicalUrl":"/patroni","path":"/patroni","votes":0,"fans":35,"stacks":19,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773733721900":{"id":"101231773733721900","name":"Consul","slug":"consul","title":"A tool for service discovery, monitoring and configuration","verified":true,"imageUrl":"https://img.stackshare.io/service/747/consul-logo-grad_teaser.png","canonicalUrl":"/consul","path":"/consul","votes":206,"fans":1686,"stacks":1174,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773616958547":{"id":"101231773616958547","name":"Amazon ElastiCache","slug":"amazon-elasticache","title":"Deploy, operate, and scale an in-memory cache in the cloud","verified":false,"imageUrl":"https://img.stackshare.io/service/392/amazon-elasticache.png","canonicalUrl":"/amazon-elasticache","path":"/amazon-elasticache","votes":150,"fans":1236,"stacks":1340,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773405612798":{"id":"101231773405612798","name":"Amazon EC2","slug":"amazon-ec2","title":"Scalable, pay-as-you-go compute capacity in the cloud","verified":false,"imageUrl":"https://img.stackshare.io/service/18/amazon-ec2.png","canonicalUrl":"/amazon-ec2","path":"/amazon-ec2","votes":2547,"fans":39415,"stacks":44679,"following":false,"followContext":null,"__typename":"Tool"},"$Tool:101231773632626053.stackDecisionsWithAlternatives({\"first\":2}).edges.1":{"node":{"type":"id","generated":false,"id":"StackDecision:101738839992901798","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"$Tool:101231773632626053.stackDecisionsWithAlternatives({\"first\":2})":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231773632626053.stackDecisionsWithAlternatives({\"first\":2}).edges.0","typename":"StackDecisionEdge"},{"type":"id","generated":true,"id":"$Tool:101231773632626053.stackDecisionsWithAlternatives({\"first\":2}).edges.1","typename":"StackDecisionEdge"}],"__typename":"StackDecisionConnection"},"$Tool:101231773865214260.alternativeTools({\"first\":8}).edges.2":{"node":{"type":"id","generated":false,"id":"Tool:101231773632626053","typename":"Tool"},"__typename":"ToolEdge"},"Tool:101231774331076628":{"id":"101231774331076628","path":"/spark","slug":"spark","title":"Fast and general engine for large-scale data processing","votes":139,"following":false,"followers":{"type":"id","generated":true,"id":"$Tool:101231774331076628.followers","typename":"UserConnection"},"stacks":2769,"githubForksCount":26364,"imageUrl":"https://img.stackshare.io/service/2220/ca72c4715da998b0bf5d1c857958bed3.png","thumbRetinaUrl":"https://img.stackshare.io/service/2220/thumb_retina_ca72c4715da998b0bf5d1c857958bed3.png","name":"Apache Spark","description":"Spark is a fast and general processing engine compatible with Hadoop data. It can run in Hadoop clusters through YARN or Spark's standalone mode, and it can process data in HDFS, HBase, Cassandra, Hive, and any Hadoop InputFormat. It is designed to perform both batch processing (similar to MapReduce) and new workloads like streaming, interactive queries, and machine learning.","contactEnabled":true,"contactButtonText":"Join the Snowflake Build Summit","contactFlow":{"type":"json","json":{"links":[{"url":"https://www.snowflake.com/build/?utm_source=stackshare&utm_medium=display&utm_campaign=na-us-en-stackshare&utm_content=-ld-build-stackshare","type":"website"}],"steps":["direct_link"]}},"pros":{"type":"id","generated":true,"id":"$Tool:101231774331076628.pros","typename":"ReasonConnection"},"cons":{"type":"id","generated":true,"id":"$Tool:101231774331076628.cons","typename":"ReasonConnection"},"verified":false,"canonicalUrl":"/spark","fans":3779,"followContext":null,"__typename":"Tool","stackDecisionsWithAlternatives({\"first\":2})":{"type":"id","generated":true,"id":"$Tool:101231774331076628.stackDecisionsWithAlternatives({\"first\":2})","typename":"StackDecisionConnection"}},"$Tool:101231774331076628.followers":{"count":3231,"__typename":"UserConnection"},"Reason:101978469304936435":{"id":"101978469304936435","upvoted":false,"upvotesCount":60,"text":"Open-source","__typename":"Reason"},"$Tool:101231774331076628.pros.edges.0":{"node":{"type":"id","generated":false,"id":"Reason:101978469304936435","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469442414479":{"id":"101978469442414479","upvoted":false,"upvotesCount":48,"text":"Fast and Flexible","__typename":"Reason"},"$Tool:101231774331076628.pros.edges.1":{"node":{"type":"id","generated":false,"id":"Reason:101978469442414479","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469839259269":{"id":"101978469839259269","upvoted":false,"upvotesCount":8,"text":"Great for distributed SQL like applications","__typename":"Reason"},"$Tool:101231774331076628.pros.edges.2":{"node":{"type":"id","generated":false,"id":"Reason:101978469839259269","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:102185069411646138":{"id":"102185069411646138","upvoted":false,"upvotesCount":8,"text":"One platform for every big data problem","__typename":"Reason"},"$Tool:101231774331076628.pros.edges.3":{"node":{"type":"id","generated":false,"id":"Reason:102185069411646138","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469839132958":{"id":"101978469839132958","upvoted":false,"upvotesCount":6,"text":"Easy to install and to use","__typename":"Reason"},"$Tool:101231774331076628.pros.edges.4":{"node":{"type":"id","generated":false,"id":"Reason:101978469839132958","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103908534374469274":{"id":"103908534374469274","upvoted":false,"upvotesCount":3,"text":"Works well for most Datascience usecases","__typename":"Reason"},"$Tool:101231774331076628.pros.edges.5":{"node":{"type":"id","generated":false,"id":"Reason:103908534374469274","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:102185062264134752":{"id":"102185062264134752","upvoted":false,"upvotesCount":2,"text":"Interactive Query","__typename":"Reason"},"$Tool:101231774331076628.pros.edges.6":{"node":{"type":"id","generated":false,"id":"Reason:102185062264134752","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978470186088483":{"id":"101978470186088483","upvoted":false,"upvotesCount":2,"text":"In memory Computation","__typename":"Reason"},"$Tool:101231774331076628.pros.edges.7":{"node":{"type":"id","generated":false,"id":"Reason:101978470186088483","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:102185064705108931":{"id":"102185064705108931","upvoted":false,"upvotesCount":2,"text":"Machine learning libratimery, Streaming in real ","__typename":"Reason"},"$Tool:101231774331076628.pros.edges.8":{"node":{"type":"id","generated":false,"id":"Reason:102185064705108931","typename":"Reason"},"__typename":"ReasonEdge"},"$Tool:101231774331076628.pros":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231774331076628.pros.edges.0","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774331076628.pros.edges.1","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774331076628.pros.edges.2","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774331076628.pros.edges.3","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774331076628.pros.edges.4","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774331076628.pros.edges.5","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774331076628.pros.edges.6","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774331076628.pros.edges.7","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774331076628.pros.edges.8","typename":"ReasonEdge"}],"__typename":"ReasonConnection"},"Reason:102145505608948028":{"id":"102145505608948028","upvoted":false,"upvotesCount":3,"text":"Speed","__typename":"Reason"},"$Tool:101231774331076628.cons.edges.0":{"node":{"type":"id","generated":false,"id":"Reason:102145505608948028","typename":"Reason"},"__typename":"ReasonEdge"},"$Tool:101231774331076628.cons":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231774331076628.cons.edges.0","typename":"ReasonEdge"}],"__typename":"ReasonConnection"},"User:101904328282890634":{"id":"101904328282890634","username":"ecolson","title":"Chief Algorithms Officer","companyName":"Stitch Fix","imageUrl":"https://img.stackshare.io/user/290754/default_086d43385948b3cdeca2bd67802ca2c5f0fbe4fd.jpeg","thumbUrl":"https://img.stackshare.io/user/290754/thumb_086d43385948b3cdeca2bd67802ca2c5f0fbe4fd.jpeg","displayName":"Eric Colson","__typename":"User"},"StackDecision:101904378398432049":{"user":{"type":"id","generated":false,"id":"User:101904328282890634","typename":"User"},"company":{"type":"id","generated":true,"id":"$StackDecision:101904378398432049.company","typename":"Company"},"link":{"type":"id","generated":true,"id":"$StackDecision:101904378398432049.link","typename":"Link"},"publicId":"101904378398432049","publishedAt":"2019-04-10T23:03:00Z","id":"101904378398432049","htmlContent":"<p>The algorithms and data infrastructure at Stitch Fix is housed in <span class=\"topic\">#AWS</span>. Data acquisition is split between events flowing through <span class=\"tool\">Kafka</span>, and periodic snapshots of <span class=\"tool\">PostgreSQL</span> DBs. We store data in an <span class=\"tool\">Amazon S3</span> based data warehouse. <span class=\"tool\">Apache Spark</span> on Yarn is our tool of choice for data movement and <span class=\"topic\">#ETL</span>. Because our storage layer (s3) is decoupled from our processing layer, we are able to scale our compute environment very elastically. We have several semi-permanent, autoscaling Yarn clusters running to serve our data processing needs. While the bulk of our compute infrastructure is dedicated to algorithmic processing, we also implemented <span class=\"tool\">Presto</span> for adhoc queries and dashboards.</p>\r\n\r\n<p>Beyond data movement and ETL, most <span class=\"topic\">#ML</span> centric jobs (e.g. model training and execution) run in a similarly elastic environment as containers running <span class=\"tool\">Python</span> and <span class=\"tool\">R</span> code on <span class=\"tool\">Amazon EC2 Container Service</span> clusters. The execution of batch jobs on top of ECS is managed by Flotilla, a service we built in house and open sourced (see <a href=\"https://github.com/stitchfix/flotilla-os\" rel=\"nofollow noopener\" target=\"_blank\">https://github.com/stitchfix/flotilla-os</a>).</p>\r\n\r\n<p>At Stitch Fix, algorithmic integrations are pervasive across the business. We have dozens of data products actively integrated systems. That requires serving layer that is robust, agile, flexible, and allows for self-service. Models produced on Flotilla are packaged for deployment in production using Khan, another framework we've developed internally. Khan provides our data scientists the ability to quickly productionize those models they've developed with open source frameworks in Python 3 (e.g. <span class=\"tool\">PyTorch</span>, sklearn), by automatically packaging them as <span class=\"tool\">Docker</span> containers and deploying to Amazon ECS. This provides our data scientist a one-click method of getting from their algorithms to production. We then integrate those deployments into a service mesh, which allows us to A/B test various implementations in our product.</p>\r\n\r\n<p>For more info:</p>\r\n\r\n<ul>\r\n<li>Our Algorithms Tour: <a href=\"https://algorithms-tour.stitchfix.com/\" rel=\"nofollow noopener\" target=\"_blank\">https://algorithms-tour.stitchfix.com/</a>\r\n</li>\r\n<li>Our blog: <a href=\"https://multithreaded.stitchfix.com/blog/\" rel=\"nofollow noopener\" target=\"_blank\">https://multithreaded.stitchfix.com/blog/</a>\r\n</li>\r\n<li>Careers: <a href=\"https://multithreaded.stitchfix.com/careers/\" rel=\"nofollow noopener\" target=\"_blank\">https://multithreaded.stitchfix.com/careers/</a>\r\n</li>\r\n</ul>\r\n\r\n<p><span class=\"topic\">#DataScience</span> <span class=\"topic\">#DataStack</span> <span class=\"topic\">#Data</span> </p>","viewCount":2565432,"upvotesCount":21,"services":[{"type":"id","generated":false,"id":"Tool:101231773865214260","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773853533403","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773409399220","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774331076628","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774501522052","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773837179153","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773941167904","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231777504503046","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773669807419","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774215500019","typename":"Tool"}],"topics":[{"type":"id","generated":false,"id":"Topic:101231988867646475","typename":"Topic"},{"type":"id","generated":false,"id":"Topic:101752972636888977","typename":"Topic"},{"type":"id","generated":false,"id":"Topic:101231988909049597","typename":"Topic"},{"type":"id","generated":false,"id":"Topic:101231988991858530","typename":"Topic"},{"type":"id","generated":false,"id":"Topic:101910501639859675","typename":"Topic"},{"type":"id","generated":false,"id":"Topic:101910501640308173","typename":"Topic"}],"__typename":"StackDecision"},"$StackDecision:101904378398432049.company":{"imageUrl":"https://img.stackshare.io/company/5741/default_ec89609d5ac13f03603a6a57e2f2a67253b55dad.jpg","thumbUrl":"https://img.stackshare.io/company/5741/thumb_ec89609d5ac13f03603a6a57e2f2a67253b55dad.jpg","name":"Stitch Fix","path":"/companies/stitch-fix","features":[],"__typename":"Company"},"$StackDecision:101904378398432049.link":{"url":"https://algorithms-tour.stitchfix.com/","title":"Stitch Fix Algorithms Tour","__typename":"Link"},"Tool:101231774501522052":{"id":"101231774501522052","name":"Presto","slug":"presto","title":"Distributed SQL Query Engine for Big Data","verified":true,"imageUrl":"https://img.stackshare.io/service/2606/default_9c42299fc673a12eed0ad20cb7f5c1fd4ef5c80f.png","canonicalUrl":"/presto","path":"/presto","votes":66,"fans":1062,"stacks":378,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773941167904":{"id":"101231773941167904","name":"R Language","slug":"r-language","title":"A language and environment for statistical computing and graphics","verified":false,"imageUrl":"https://img.stackshare.io/service/1213/r-logo.png","canonicalUrl":"/r-language","path":"/r-language","votes":399,"fans":2206,"stacks":2946,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231777504503046":{"id":"101231777504503046","name":"PyTorch","slug":"pytorch","title":"A deep learning framework that puts Python first","verified":false,"imageUrl":"https://img.stackshare.io/service/8171/YYpjkbVn_400x400.jpg","canonicalUrl":"/pytorch","path":"/pytorch","votes":42,"fans":1594,"stacks":1248,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231774215500019":{"id":"101231774215500019","name":"Amazon EC2 Container Service","slug":"amazon-ec2-container-service","title":"Container management service that supports Docker containers","verified":true,"imageUrl":"https://img.stackshare.io/service/1908/amazon-ecs.png","canonicalUrl":"/amazon-ec2-container-service","path":"/amazon-ec2-container-service","votes":325,"fans":11063,"stacks":13112,"following":false,"followContext":null,"__typename":"Tool"},"Topic:101752972636888977":{"name":"Etl","id":"101752972636888977","__typename":"Topic"},"Topic:101231988909049597":{"name":"ML","id":"101231988909049597","__typename":"Topic"},"Topic:101231988991858530":{"name":"DataScience","id":"101231988991858530","__typename":"Topic"},"Topic:101910501639859675":{"name":"DataStack","id":"101910501639859675","__typename":"Topic"},"$Tool:101231774331076628.stackDecisionsWithAlternatives({\"first\":2}).edges.0":{"node":{"type":"id","generated":false,"id":"StackDecision:101904378398432049","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"User:101232060335104864":{"id":"101232060335104864","username":"conor","title":"Tech Brand Mgr, Office of CTO","companyName":"Uber","imageUrl":"https://img.stackshare.io/user/139323/default_6e3b53ba36fc1cc7f7d8766d8e218302acb264db.jpeg","thumbUrl":"https://img.stackshare.io/user/139323/thumb_6e3b53ba36fc1cc7f7d8766d8e218302acb264db.jpeg","displayName":"Conor Myhrvold","__typename":"User"},"StackDecision:101184618312136914":{"user":{"type":"id","generated":false,"id":"User:101232060335104864","typename":"User"},"company":{"type":"id","generated":true,"id":"$StackDecision:101184618312136914.company","typename":"Company"},"link":{"type":"id","generated":true,"id":"$StackDecision:101184618312136914.link","typename":"Link"},"publicId":"101184618312136914","publishedAt":"2018-12-04T20:19:00Z","id":"101184618312136914","htmlContent":"<p>Why we built Marmaray, an open source generic data ingestion and dispersal framework and library for Apache <span class=\"tool\">Hadoop</span> :</p>\r\n\r\n<p>Built and designed by our Hadoop Platform team, Marmaray is a plug-in-based framework built on top of the Hadoop ecosystem. Users can add support to ingest data from any source and disperse to any sink leveraging the use of <span class=\"tool\">Apache Spark</span> . The name, Marmaray, comes from a tunnel in Turkey connecting Europe and Asia. Similarly, we envisioned Marmaray within Uber as a pipeline connecting data from any source to any sink depending on customer preference:</p>\r\n\r\n<p><a href=\"https://eng.uber.com/marmaray-hadoop-ingestion-open-source/\" rel=\"nofollow noopener\" target=\"_blank\">https://eng.uber.com/marmaray-hadoop-ingestion-open-source/</a></p>\r\n\r\n<p>(Direct <span class=\"tool\">GitHub</span> repo: <a href=\"https://github.com/uber/marmaray\" rel=\"nofollow noopener\" target=\"_blank\">https://github.com/uber/marmaray</a> <span class=\"tool\">Kafka</span> <span class=\"tool\">Kafka Manager</span> )</p>","viewCount":1232421,"upvotesCount":7,"services":[{"type":"id","generated":false,"id":"Tool:101231773865214260","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774455433502","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773857450417","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774331076628","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773410696721","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"$StackDecision:101184618312136914.company":{"imageUrl":"https://img.stackshare.io/company/363/default_e5d5db9bd2df8488fe8e61913e700c52ec9c13e4.jpg","thumbUrl":"https://img.stackshare.io/company/363/thumb_e5d5db9bd2df8488fe8e61913e700c52ec9c13e4.jpg","name":"Uber Technologies","path":"/companies/uber-technologies","features":[],"__typename":"Company"},"$StackDecision:101184618312136914.link":{"url":"https://eng.uber.com/marmaray-hadoop-ingestion-open-source/","title":"Marmaray: An Open Source Generic Data Ingestion and Dispersal Framework and Library for Apache Hadoop | Uber Engineering Blog","__typename":"Link"},"Tool:101231774455433502":{"id":"101231774455433502","name":"Kafka Manager","slug":"kafka-manager","title":"A tool for managing Apache Kafka, developed by Yahoo","verified":false,"imageUrl":"https://img.stackshare.io/no-img-open-source.png","canonicalUrl":"/kafka-manager","path":"/kafka-manager","votes":1,"fans":170,"stacks":68,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773857450417":{"id":"101231773857450417","name":"Hadoop","slug":"hadoop","title":"Open-source software for reliable, scalable, distributed computing","verified":false,"imageUrl":"https://img.stackshare.io/service/1044/elephant_rgb_sq.png","canonicalUrl":"/hadoop","path":"/hadoop","votes":56,"fans":2584,"stacks":2324,"following":false,"followContext":null,"__typename":"Tool"},"$Tool:101231774331076628.stackDecisionsWithAlternatives({\"first\":2}).edges.1":{"node":{"type":"id","generated":false,"id":"StackDecision:101184618312136914","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"$Tool:101231774331076628.stackDecisionsWithAlternatives({\"first\":2})":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231774331076628.stackDecisionsWithAlternatives({\"first\":2}).edges.0","typename":"StackDecisionEdge"},{"type":"id","generated":true,"id":"$Tool:101231774331076628.stackDecisionsWithAlternatives({\"first\":2}).edges.1","typename":"StackDecisionEdge"}],"__typename":"StackDecisionConnection"},"$Tool:101231773865214260.alternativeTools({\"first\":8}).edges.3":{"node":{"type":"id","generated":false,"id":"Tool:101231774331076628","typename":"Tool"},"__typename":"ToolEdge"},"Tool:101231774164529187":{"id":"101231774164529187","path":"/akka","slug":"akka","title":"Build powerful concurrent & distributed applications more easily","votes":88,"following":false,"followers":{"type":"id","generated":true,"id":"$Tool:101231774164529187.followers","typename":"UserConnection"},"stacks":952,"githubForksCount":3605,"imageUrl":"https://img.stackshare.io/service/1773/bxLhidly.png","thumbRetinaUrl":"https://img.stackshare.io/service/1773/thumb_retina_bxLhidly.png","name":"Akka","description":"Akka is a toolkit and runtime for building highly concurrent, distributed, and resilient message-driven applications on the JVM.","contactEnabled":false,"contactButtonText":null,"contactFlow":{"type":"json","json":{}},"pros":{"type":"id","generated":true,"id":"$Tool:101231774164529187.pros","typename":"ReasonConnection"},"cons":{"type":"id","generated":true,"id":"$Tool:101231774164529187.cons","typename":"ReasonConnection"},"verified":false,"canonicalUrl":"/akka","fans":1118,"followContext":null,"__typename":"Tool","stackDecisionsWithAlternatives({\"first\":2})":{"type":"id","generated":true,"id":"$Tool:101231774164529187.stackDecisionsWithAlternatives({\"first\":2})","typename":"StackDecisionConnection"}},"$Tool:101231774164529187.followers":{"count":948,"__typename":"UserConnection"},"Reason:101978469448194590":{"id":"101978469448194590","upvoted":false,"upvotesCount":32,"text":"Great concurrency model","__typename":"Reason"},"$Tool:101231774164529187.pros.edges.0":{"node":{"type":"id","generated":false,"id":"Reason:101978469448194590","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469429660804":{"id":"101978469429660804","upvoted":false,"upvotesCount":17,"text":"Fast","__typename":"Reason"},"$Tool:101231774164529187.pros.edges.1":{"node":{"type":"id","generated":false,"id":"Reason:101978469429660804","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469689764477":{"id":"101978469689764477","upvoted":false,"upvotesCount":12,"text":"Actor Library","__typename":"Reason"},"$Tool:101231774164529187.pros.edges.2":{"node":{"type":"id","generated":false,"id":"Reason:101978469689764477","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469689595512":{"id":"101978469689595512","upvoted":false,"upvotesCount":10,"text":"Open source","__typename":"Reason"},"$Tool:101231774164529187.pros.edges.3":{"node":{"type":"id","generated":false,"id":"Reason:101978469689595512","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978470167576055":{"id":"101978470167576055","upvoted":false,"upvotesCount":7,"text":"Resilient ","__typename":"Reason"},"$Tool:101231774164529187.pros.edges.4":{"node":{"type":"id","generated":false,"id":"Reason:101978470167576055","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978470167749163":{"id":"101978470167749163","upvoted":false,"upvotesCount":5,"text":"Scalable","__typename":"Reason"},"$Tool:101231774164529187.pros.edges.5":{"node":{"type":"id","generated":false,"id":"Reason:101978470167749163","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978470168020420":{"id":"101978470168020420","upvoted":false,"upvotesCount":5,"text":"Message driven","__typename":"Reason"},"$Tool:101231774164529187.pros.edges.6":{"node":{"type":"id","generated":false,"id":"Reason:101978470168020420","typename":"Reason"},"__typename":"ReasonEdge"},"$Tool:101231774164529187.pros":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231774164529187.pros.edges.0","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774164529187.pros.edges.1","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774164529187.pros.edges.2","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774164529187.pros.edges.3","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774164529187.pros.edges.4","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774164529187.pros.edges.5","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774164529187.pros.edges.6","typename":"ReasonEdge"}],"__typename":"ReasonConnection"},"Reason:101978470053085933":{"id":"101978470053085933","upvoted":false,"upvotesCount":3,"text":"Mixing futures with Akka tell is difficult","__typename":"Reason"},"$Tool:101231774164529187.cons.edges.0":{"node":{"type":"id","generated":false,"id":"Reason:101978470053085933","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978470053257932":{"id":"101978470053257932","upvoted":false,"upvotesCount":2,"text":"Closing of futures","__typename":"Reason"},"$Tool:101231774164529187.cons.edges.1":{"node":{"type":"id","generated":false,"id":"Reason:101978470053257932","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978470052935622":{"id":"101978470052935622","upvoted":false,"upvotesCount":2,"text":"No type safety","__typename":"Reason"},"$Tool:101231774164529187.cons.edges.2":{"node":{"type":"id","generated":false,"id":"Reason:101978470052935622","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978470053403233":{"id":"101978470053403233","upvoted":false,"upvotesCount":1,"text":"Very difficult to refactor","__typename":"Reason"},"$Tool:101231774164529187.cons.edges.3":{"node":{"type":"id","generated":false,"id":"Reason:101978470053403233","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978470053576584":{"id":"101978470053576584","upvoted":false,"upvotesCount":1,"text":"Typed actors still not stable","__typename":"Reason"},"$Tool:101231774164529187.cons.edges.4":{"node":{"type":"id","generated":false,"id":"Reason:101978470053576584","typename":"Reason"},"__typename":"ReasonEdge"},"$Tool:101231774164529187.cons":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231774164529187.cons.edges.0","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774164529187.cons.edges.1","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774164529187.cons.edges.2","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774164529187.cons.edges.3","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774164529187.cons.edges.4","typename":"ReasonEdge"}],"__typename":"ReasonConnection"},"User:102366402938755636":{"id":"102366402938755636","username":"stackbot","title":null,"companyName":null,"imageUrl":"https://img.stackshare.io/user/299852/default_e6c5c079eeed2f178ff111094f79fc759338903b.png","thumbUrl":"https://img.stackshare.io/user/299852/thumb_e6c5c079eeed2f178ff111094f79fc759338903b.png","displayName":"StackShare Editors","__typename":"User"},"StackDecision:102366434266643754":{"user":{"type":"id","generated":false,"id":"User:102366402938755636","typename":"User"},"company":{"type":"id","generated":true,"id":"$StackDecision:102366434266643754.company","typename":"Company"},"link":{"type":"id","generated":true,"id":"$StackDecision:102366434266643754.link","typename":"Link"},"publicId":"102366434266643754","publishedAt":"2016-09-03T12:00:00Z","id":"102366434266643754","htmlContent":"<p>To solve the problem of scheduling and executing arbitrary tasks in its distributed infrastructure, PagerDuty created an open-source tool called Scheduler. Scheduler is written in Scala and uses Cassandra for task persistence. It also adds Apache Kafka to handle task queuing and partitioning, with Akka to structure the library’s concurrency.</p>\n\n<p>The service’s logic schedules a task by passing it to the Scheduler’s Scala API, which serializes the task metadata and enqueues it into Kafka. Scheduler then consumes the tasks, and posts them to Cassandra to prevent data loss. </p>","viewCount":349272,"upvotesCount":1,"services":[{"type":"id","generated":false,"id":"Tool:101231773865214260","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773845539901","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773855147984","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774164529187","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"$StackDecision:102366434266643754.company":{"imageUrl":"https://img.stackshare.io/company/248/default_d6d02a8991db55978b1dcc92d60abcfbc0267455.jpg","thumbUrl":"https://img.stackshare.io/company/248/thumb_d6d02a8991db55978b1dcc92d60abcfbc0267455.jpg","name":"PagerDuty","path":"/companies/pagerduty","features":[],"__typename":"Company"},"$StackDecision:102366434266643754.link":{"url":"https://www.pagerduty.com/eng/distributed-task-scheduling-pt1/","title":"Distributed Task Scheduling with Akka, Kafka, Cassandra | PagerDuty","__typename":"Link"},"Tool:101231773845539901":{"id":"101231773845539901","name":"Scala","slug":"scala","title":"A pure-bred object-oriented language that runs on the JVM","verified":false,"imageUrl":"https://img.stackshare.io/service/1012/scala.png","canonicalUrl":"/scala","path":"/scala","votes":1515,"fans":8544,"stacks":9042,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773855147984":{"id":"101231773855147984","name":"Cassandra","slug":"cassandra","title":"A partitioned row store. Rows are organized into tables with a required primary key.","verified":false,"imageUrl":"https://img.stackshare.io/service/1032/cassandra_small.png","canonicalUrl":"/cassandra","path":"/cassandra","votes":500,"fans":4044,"stacks":3352,"following":false,"followContext":null,"__typename":"Tool"},"$Tool:101231774164529187.stackDecisionsWithAlternatives({\"first\":2}).edges.0":{"node":{"type":"id","generated":false,"id":"StackDecision:102366434266643754","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"User:101231993228340215":{"id":"101231993228340215","username":"LawrenceHecht","title":null,"companyName":null,"imageUrl":"https://img.stackshare.io/user/7989/default_4f44c3cd33acb2ae210008862a6041a7dd395ced.jpeg","thumbUrl":"https://img.stackshare.io/user/7989/thumb_4f44c3cd33acb2ae210008862a6041a7dd395ced.jpeg","displayName":"Lawrence Hecht","__typename":"User"},"StackDecision:102100826524403008":{"user":{"type":"id","generated":false,"id":"User:101231993228340215","typename":"User"},"company":null,"link":null,"publicId":"102100826524403008","publishedAt":"2019-05-15T15:42:54Z","id":"102100826524403008","htmlContent":"<p>I decided to use <span class=\"tool\">Akka</span> instead of <span class=\"tool\">Kafka</span> streams because I have personal relationships at @Lightbend. </p>","viewCount":347312,"upvotesCount":1,"services":[{"type":"id","generated":false,"id":"Tool:101231774164529187","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773865214260","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"$Tool:101231774164529187.stackDecisionsWithAlternatives({\"first\":2}).edges.1":{"node":{"type":"id","generated":false,"id":"StackDecision:102100826524403008","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"$Tool:101231774164529187.stackDecisionsWithAlternatives({\"first\":2})":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231774164529187.stackDecisionsWithAlternatives({\"first\":2}).edges.0","typename":"StackDecisionEdge"},{"type":"id","generated":true,"id":"$Tool:101231774164529187.stackDecisionsWithAlternatives({\"first\":2}).edges.1","typename":"StackDecisionEdge"}],"__typename":"StackDecisionConnection"},"$Tool:101231773865214260.alternativeTools({\"first\":8}).edges.4":{"node":{"type":"id","generated":false,"id":"Tool:101231774164529187","typename":"Tool"},"__typename":"ToolEdge"},"Tool:101231774090990020":{"id":"101231774090990020","path":"/apache-storm","slug":"apache-storm","title":"Distributed and fault-tolerant realtime computation","votes":24,"following":false,"followers":{"type":"id","generated":true,"id":"$Tool:101231774090990020.followers","typename":"UserConnection"},"stacks":187,"githubForksCount":4091,"imageUrl":"https://img.stackshare.io/service/1595/WC8j4Gr3.png","thumbRetinaUrl":"https://img.stackshare.io/service/1595/thumb_retina_WC8j4Gr3.png","name":"Apache Storm","description":"Apache Storm is a free and open source distributed realtime computation system. Storm makes it easy to reliably process unbounded streams of data, doing for realtime processing what Hadoop did for batch processing. Storm has many use cases: realtime analytics, online machine learning, continuous computation, distributed RPC, ETL, and more. Storm is fast: a benchmark clocked it at over a million tuples processed per second per node. It is scalable, fault-tolerant, guarantees your data will be processed, and is easy to set up and operate.","contactEnabled":false,"contactButtonText":"","contactFlow":{"type":"json","json":{}},"pros":{"type":"id","generated":true,"id":"$Tool:101231774090990020.pros","typename":"ReasonConnection"},"cons":{"type":"id","generated":true,"id":"$Tool:101231774090990020.cons","typename":"ReasonConnection"},"verified":false,"canonicalUrl":"/apache-storm","fans":336,"followContext":null,"__typename":"Tool","stackDecisionsWithAlternatives({\"first\":2})":{"type":"id","generated":true,"id":"$Tool:101231774090990020.stackDecisionsWithAlternatives({\"first\":2})","typename":"StackDecisionConnection"}},"$Tool:101231774090990020.followers":{"count":276,"__typename":"UserConnection"},"Reason:101978468587021743":{"id":"101978468587021743","upvoted":false,"upvotesCount":10,"text":"Flexible","__typename":"Reason"},"$Tool:101231774090990020.pros.edges.0":{"node":{"type":"id","generated":false,"id":"Reason:101978468587021743","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468587912321":{"id":"101978468587912321","upvoted":false,"upvotesCount":6,"text":"Easy setup","__typename":"Reason"},"$Tool:101231774090990020.pros.edges.1":{"node":{"type":"id","generated":false,"id":"Reason:101978468587912321","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468588036322":{"id":"101978468588036322","upvoted":false,"upvotesCount":3,"text":"Clojure","__typename":"Reason"},"$Tool:101231774090990020.pros.edges.2":{"node":{"type":"id","generated":false,"id":"Reason:101978468588036322","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978470009569172":{"id":"101978470009569172","upvoted":false,"upvotesCount":3,"text":"Event Processing","__typename":"Reason"},"$Tool:101231774090990020.pros.edges.3":{"node":{"type":"id","generated":false,"id":"Reason:101978470009569172","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978470009449071":{"id":"101978470009449071","upvoted":false,"upvotesCount":2,"text":"Real Time","__typename":"Reason"},"$Tool:101231774090990020.pros.edges.4":{"node":{"type":"id","generated":false,"id":"Reason:101978470009449071","typename":"Reason"},"__typename":"ReasonEdge"},"$Tool:101231774090990020.pros":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231774090990020.pros.edges.0","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774090990020.pros.edges.1","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774090990020.pros.edges.2","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774090990020.pros.edges.3","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774090990020.pros.edges.4","typename":"ReasonEdge"}],"__typename":"ReasonConnection"},"$Tool:101231774090990020.cons":{"edges":[],"__typename":"ReasonConnection"},"User:101231996611164474":{"id":"101231996611164474","username":"slpsys","title":"Infra & Data Eng Manager","companyName":"Thumbtack","imageUrl":"https://img.stackshare.io/user/15404/default_a3cffaa4255be10262e552b64eebd8e141605c61.jpeg","thumbUrl":"https://img.stackshare.io/user/15404/thumb_a3cffaa4255be10262e552b64eebd8e141605c61.jpeg","displayName":"Marc Bollinger","__typename":"User"},"StackDecision:101175117062127556":{"user":{"type":"id","generated":false,"id":"User:101231996611164474","typename":"User"},"company":{"type":"id","generated":true,"id":"$StackDecision:101175117062127556.company","typename":"Company"},"link":{"type":"id","generated":true,"id":"$StackDecision:101175117062127556.link","typename":"Link"},"publicId":"101175117062127556","publishedAt":"2018-12-03T04:02:47Z","id":"101175117062127556","htmlContent":"<p>Lumosity is home to the world's largest cognitive training database, a responsibility we take seriously. For most of the company's history, our analysis of user behavior and training data has been powered by an event stream--first a simple <span class=\"tool\">Node.js</span> pub/sub app, then a heavyweight <span class=\"tool\">Ruby</span> app with stronger durability. Both supported decent throughput and latency, but they lacked some major features supported by existing open-source alternatives: replaying existing messages (also lacking in most message queue-based solutions), scaling out many different readers for the same stream, the ability to leverage existing solutions for reading and writing, and possibly most importantly: the ability to hire someone externally who already had expertise.</p>\n\n<p>We ultimately migrated to <span class=\"tool\">Kafka</span> in early- to mid-2016, citing both industry trends in companies we'd talked to with similar durability and throughput needs, the extremely strong documentation and community. We pored over Kyle Kingsbury's Jepsen post (<a href=\"https://aphyr.com/posts/293-jepsen-Kafka\" rel=\"nofollow noopener\" target=\"_blank\">https://aphyr.com/posts/293-jepsen-Kafka</a>), as well as Jay Kreps' follow-up (<a href=\"http://blog.empathybox.com/post/62279088548/a-few-notes-on-kafka-and-jepsen\" rel=\"nofollow noopener\" target=\"_blank\">http://blog.empathybox.com/post/62279088548/a-few-notes-on-kafka-and-jepsen</a>), talked at length with Confluent folks and community members, and still wound up running parallel systems for quite a long time, but ultimately, we've been very, very happy. Understanding the internals and proper levers takes some commitment, but it's taken very little maintenance once configured. Since then, the Confluent Platform community has grown and grown; we've gone from doing most development using custom <span class=\"tool\">Scala</span> consumers and producers to being 60/40 Kafka Streams/Connects.</p>\n\n<p>We originally looked into <span class=\"tool\">Storm</span> / <span class=\"tool\">Heron</span> , and we'd moved on from <span class=\"tool\">Redis</span> pub/sub. Heron looks great, but we already had a programming model across services that was more akin to consuming a message consumers than required a topology of bolts, etc. Heron also had just come out while we were starting to migrate things, and the community momentum and direction of Kafka felt more substantial than the older Storm. If we were to start the process over again today, we might check out <span class=\"tool\">Pulsar</span> , although the ecosystem is much younger.</p>\n\n<p>To find out more, read our 2017 engineering blog post about the migration!</p>","viewCount":585743,"upvotesCount":5,"services":[{"type":"id","generated":false,"id":"Tool:101231773845103618","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773835511567","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773865214260","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773845539901","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774090990020","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231775971017168","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773854768982","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231776277399343","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"$StackDecision:101175117062127556.company":{"imageUrl":"https://img.stackshare.io/company/3347/default_3b3de1fed2b0e761a90f8a64f75954dda65c2e29.jpg","thumbUrl":"https://img.stackshare.io/company/3347/thumb_3b3de1fed2b0e761a90f8a64f75954dda65c2e29.jpg","name":"Lumosity","path":"/companies/lumosity","features":[],"__typename":"Company"},"$StackDecision:101175117062127556.link":{"url":"http://engineering.lumosity.com/data-engineering/2017/11/13/migrating-our-architecture-to-kafka/","title":"Brain Surgery at Scale: Migrating Our Architecture to Kafka","__typename":"Link"},"Tool:101231773835511567":{"id":"101231773835511567","name":"Ruby","slug":"ruby","title":"A dynamic, interpreted, open source programming language with a focus on simplicity and productivity","verified":false,"imageUrl":"https://img.stackshare.io/service/989/ruby.png","canonicalUrl":"/ruby","path":"/ruby","votes":3922,"fans":23351,"stacks":30703,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231775971017168":{"id":"101231775971017168","name":"Heron","slug":"heron","title":"Realtime, distributed, fault-tolerant stream processing engine from Twitter","verified":false,"imageUrl":"https://img.stackshare.io/service/5164/I_qOkhy5.jpg","canonicalUrl":"/heron","path":"/heron","votes":4,"fans":63,"stacks":22,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231776277399343":{"id":"101231776277399343","name":"Apache Pulsar","slug":"apache-pulsar","title":"Distributed solution providing messaging and queuing for streaming data","verified":true,"imageUrl":"https://img.stackshare.io/service/5706/wFcLUbwd_400x400.jpg","canonicalUrl":"/apache-pulsar","path":"/apache-pulsar","votes":24,"fans":195,"stacks":92,"following":false,"followContext":null,"__typename":"Tool"},"$Tool:101231774090990020.stackDecisionsWithAlternatives({\"first\":2}).edges.0":{"node":{"type":"id","generated":false,"id":"StackDecision:101175117062127556","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"$Tool:101231774090990020.stackDecisionsWithAlternatives({\"first\":2})":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231774090990020.stackDecisionsWithAlternatives({\"first\":2}).edges.0","typename":"StackDecisionEdge"}],"__typename":"StackDecisionConnection"},"$Tool:101231773865214260.alternativeTools({\"first\":8}).edges.5":{"node":{"type":"id","generated":false,"id":"Tool:101231774090990020","typename":"Tool"},"__typename":"ToolEdge"},"Tool:101231774686680600":{"id":"101231774686680600","path":"/flink","slug":"flink","title":"Fast and reliable large-scale data processing engine","votes":38,"following":false,"followers":{"type":"id","generated":true,"id":"$Tool:101231774686680600.followers","typename":"UserConnection"},"stacks":464,"githubForksCount":11471,"imageUrl":"https://img.stackshare.io/service/2968/kQB_QIB_.png","thumbRetinaUrl":"https://img.stackshare.io/service/2968/thumb_retina_kQB_QIB_.png","name":"Apache Flink","description":"Apache Flink is an open source system for fast and versatile data analytics in clusters. Flink supports batch and streaming analytics, in one system. Analytical programs can be written in concise and elegant APIs in Java and Scala.","contactEnabled":false,"contactButtonText":null,"contactFlow":{"type":"json","json":{}},"pros":{"type":"id","generated":true,"id":"$Tool:101231774686680600.pros","typename":"ReasonConnection"},"cons":{"type":"id","generated":true,"id":"$Tool:101231774686680600.cons","typename":"ReasonConnection"},"verified":true,"canonicalUrl":"/flink","fans":874,"followContext":null,"__typename":"Tool","stackDecisionsWithAlternatives({\"first\":2})":{"type":"id","generated":true,"id":"$Tool:101231774686680600.stackDecisionsWithAlternatives({\"first\":2})","typename":"StackDecisionConnection"}},"$Tool:101231774686680600.followers":{"count":776,"__typename":"UserConnection"},"Reason:101978468828757052":{"id":"101978468828757052","upvoted":false,"upvotesCount":16,"text":"Unified batch and stream processing","__typename":"Reason"},"$Tool:101231774686680600.pros.edges.0":{"node":{"type":"id","generated":false,"id":"Reason:101978468828757052","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469578373582":{"id":"101978469578373582","upvoted":false,"upvotesCount":8,"text":"Easy to use streaming apis","__typename":"Reason"},"$Tool:101231774686680600.pros.edges.1":{"node":{"type":"id","generated":false,"id":"Reason:101978469578373582","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469578118859":{"id":"101978469578118859","upvoted":false,"upvotesCount":8,"text":"Out-of-the box connector to kinesis,s3,hdfs","__typename":"Reason"},"$Tool:101231774686680600.pros.edges.2":{"node":{"type":"id","generated":false,"id":"Reason:101978469578118859","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:104385506628872719":{"id":"104385506628872719","upvoted":false,"upvotesCount":4,"text":"Open Source","__typename":"Reason"},"$Tool:101231774686680600.pros.edges.3":{"node":{"type":"id","generated":false,"id":"Reason:104385506628872719","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:102278954472200274":{"id":"102278954472200274","upvoted":false,"upvotesCount":2,"text":"Low latency","__typename":"Reason"},"$Tool:101231774686680600.pros.edges.4":{"node":{"type":"id","generated":false,"id":"Reason:102278954472200274","typename":"Reason"},"__typename":"ReasonEdge"},"$Tool:101231774686680600.pros":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231774686680600.pros.edges.0","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774686680600.pros.edges.1","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774686680600.pros.edges.2","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774686680600.pros.edges.3","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774686680600.pros.edges.4","typename":"ReasonEdge"}],"__typename":"ReasonConnection"},"$Tool:101231774686680600.cons":{"edges":[],"__typename":"ReasonConnection"},"User:101867235932398105":{"id":"101867235932398105","username":"sbhawsar","title":"Technical Architect","companyName":"Pepcus","imageUrl":"https://img.stackshare.io/user/289941/default_c69ba334d2db6811a5675fa1d42bfc9a80d2a74c.png","thumbUrl":"https://img.stackshare.io/user/289941/thumb_c69ba334d2db6811a5675fa1d42bfc9a80d2a74c.png","displayName":"Surabhi Bhawsar","__typename":"User"},"StackDecision:102686150321221944":{"user":{"type":"id","generated":false,"id":"User:101867235932398105","typename":"User"},"company":null,"link":null,"publicId":"102686150321221944","publishedAt":"2019-08-27T00:38:00Z","id":"102686150321221944","htmlContent":"<p>I need to build the Alert &amp; Notification framework with the use of a scheduled program. We will analyze the events from the database table and filter events that are falling under a day timespan and send these event messages over email. Currently, we are using <span class=\"tool\">Kafka</span> Pub/Sub for messaging. The customer wants us to move on Apache Flink, I am trying to understand how <span class=\"tool\">Apache Flink</span> could be fit better for us. </p>","viewCount":620966,"upvotesCount":7,"services":[{"type":"id","generated":false,"id":"Tool:101231773865214260","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774686680600","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"$Tool:101231774686680600.stackDecisionsWithAlternatives({\"first\":2}).edges.0":{"node":{"type":"id","generated":false,"id":"StackDecision:102686150321221944","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"User:104392394163942961":{"id":"104392394163942961","username":"balaji_kasala2955","title":null,"companyName":null,"imageUrl":"https://img.stackshare.io/user/639206/default_8bbc6e14c309508b5dca0a6c34518c29ea466205.jpg","thumbUrl":"https://img.stackshare.io/user/639206/thumb_8bbc6e14c309508b5dca0a6c34518c29ea466205.jpg","displayName":"Balaji Kasala","__typename":"User"},"StackDecision:104392444617273089":{"user":{"type":"id","generated":false,"id":"User:104392394163942961","typename":"User"},"company":null,"link":null,"publicId":"104392444617273089","publishedAt":"2020-06-23T08:51:32Z","id":"104392444617273089","htmlContent":"<p>I have to build a data processing application with an <span class=\"tool\">Apache Beam</span> stack and <span class=\"tool\">Apache Flink</span> runner on an <span class=\"tool\">Amazon EMR</span> cluster. I saw some instability with the process and EMR clusters that keep going down. Here, the <span class=\"tool\">Apache Beam</span> application gets inputs from <span class=\"tool\">Kafka</span> and sends the accumulative data streams to another Kafka topic. Any advice on how to make the process more stable?</p>","viewCount":293891,"upvotesCount":6,"services":[{"type":"id","generated":false,"id":"Tool:101231774686680600","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773865214260","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773613329278","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231776032721670","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"Tool:101231773613329278":{"id":"101231773613329278","name":"Amazon EMR","slug":"amazon-emr","title":"Distribute your data and processing across a Amazon EC2 instances using Hadoop","verified":false,"imageUrl":"https://img.stackshare.io/service/385/amazon-emr.png","canonicalUrl":"/amazon-emr","path":"/amazon-emr","votes":54,"fans":769,"stacks":520,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231776032721670":{"id":"101231776032721670","name":"Apache Beam","slug":"apache-beam","title":"A unified programming model","verified":false,"imageUrl":"https://img.stackshare.io/service/5286/FILKflMC_400x400.png","canonicalUrl":"/apache-beam","path":"/apache-beam","votes":14,"fans":383,"stacks":170,"following":false,"followContext":null,"__typename":"Tool"},"$Tool:101231774686680600.stackDecisionsWithAlternatives({\"first\":2}).edges.1":{"node":{"type":"id","generated":false,"id":"StackDecision:104392444617273089","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"$Tool:101231774686680600.stackDecisionsWithAlternatives({\"first\":2})":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231774686680600.stackDecisionsWithAlternatives({\"first\":2}).edges.0","typename":"StackDecisionEdge"},{"type":"id","generated":true,"id":"$Tool:101231774686680600.stackDecisionsWithAlternatives({\"first\":2}).edges.1","typename":"StackDecisionEdge"}],"__typename":"StackDecisionConnection"},"$Tool:101231773865214260.alternativeTools({\"first\":8}).edges.6":{"node":{"type":"id","generated":false,"id":"Tool:101231774686680600","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231773854768982.followers":{"count":39691,"__typename":"UserConnection"},"Reason:101978468255924131":{"id":"101978468255924131","upvoted":false,"upvotesCount":881,"text":"Performance","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.0":{"node":{"type":"id","generated":false,"id":"Reason:101978468255924131","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468255647605":{"id":"101978468255647605","upvoted":false,"upvotesCount":539,"text":"Super fast","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.1":{"node":{"type":"id","generated":false,"id":"Reason:101978468255647605","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468265081472":{"id":"101978468265081472","upvoted":false,"upvotesCount":510,"text":"Ease of use ","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.2":{"node":{"type":"id","generated":false,"id":"Reason:101978468265081472","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468255524573":{"id":"101978468255524573","upvoted":false,"upvotesCount":441,"text":"In-memory cache","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.3":{"node":{"type":"id","generated":false,"id":"Reason:101978468255524573","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468246674151":{"id":"101978468246674151","upvoted":false,"upvotesCount":321,"text":"Advanced key-value cache","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.4":{"node":{"type":"id","generated":false,"id":"Reason:101978468246674151","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468266411246":{"id":"101978468266411246","upvoted":false,"upvotesCount":190,"text":"Open source ","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.5":{"node":{"type":"id","generated":false,"id":"Reason:101978468266411246","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468256029278":{"id":"101978468256029278","upvoted":false,"upvotesCount":179,"text":"Easy to deploy","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.6":{"node":{"type":"id","generated":false,"id":"Reason:101978468256029278","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468246831946":{"id":"101978468246831946","upvoted":false,"upvotesCount":163,"text":"Stable","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.7":{"node":{"type":"id","generated":false,"id":"Reason:101978468246831946","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468310816273":{"id":"101978468310816273","upvoted":false,"upvotesCount":152,"text":"Free","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.8":{"node":{"type":"id","generated":false,"id":"Reason:101978468310816273","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468246550074":{"id":"101978468246550074","upvoted":false,"upvotesCount":120,"text":"Fast","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.9":{"node":{"type":"id","generated":false,"id":"Reason:101978468246550074","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468444904781":{"id":"101978468444904781","upvoted":false,"upvotesCount":40,"text":"High-Performance","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.10":{"node":{"type":"id","generated":false,"id":"Reason:101978468444904781","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468263974284":{"id":"101978468263974284","upvoted":false,"upvotesCount":39,"text":"High Availability","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.11":{"node":{"type":"id","generated":false,"id":"Reason:101978468263974284","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468445124478":{"id":"101978468445124478","upvoted":false,"upvotesCount":34,"text":"Data Structures","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.12":{"node":{"type":"id","generated":false,"id":"Reason:101978468445124478","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468308143821":{"id":"101978468308143821","upvoted":false,"upvotesCount":31,"text":"Very Scalable","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.13":{"node":{"type":"id","generated":false,"id":"Reason:101978468308143821","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468255757564":{"id":"101978468255757564","upvoted":false,"upvotesCount":23,"text":"Replication","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.14":{"node":{"type":"id","generated":false,"id":"Reason:101978468255757564","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468641433869":{"id":"101978468641433869","upvoted":false,"upvotesCount":20,"text":"Pub/Sub","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.15":{"node":{"type":"id","generated":false,"id":"Reason:101978468641433869","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468315304332":{"id":"101978468315304332","upvoted":false,"upvotesCount":20,"text":"Great community ","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.16":{"node":{"type":"id","generated":false,"id":"Reason:101978468315304332","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468639768006":{"id":"101978468639768006","upvoted":false,"upvotesCount":17,"text":"\"NoSQL\" key-value data store","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.17":{"node":{"type":"id","generated":false,"id":"Reason:101978468639768006","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468640208475":{"id":"101978468640208475","upvoted":false,"upvotesCount":14,"text":"Hashes","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.18":{"node":{"type":"id","generated":false,"id":"Reason:101978468640208475","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468640405136":{"id":"101978468640405136","upvoted":false,"upvotesCount":12,"text":"Sets","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.19":{"node":{"type":"id","generated":false,"id":"Reason:101978468640405136","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468640522984":{"id":"101978468640522984","upvoted":false,"upvotesCount":10,"text":"Sorted Sets","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.20":{"node":{"type":"id","generated":false,"id":"Reason:101978468640522984","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468640337337":{"id":"101978468640337337","upvoted":false,"upvotesCount":9,"text":"Lists","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.21":{"node":{"type":"id","generated":false,"id":"Reason:101978468640337337","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468445241117":{"id":"101978468445241117","upvoted":false,"upvotesCount":8,"text":"BSD licensed","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.22":{"node":{"type":"id","generated":false,"id":"Reason:101978468445241117","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468639821804":{"id":"101978468639821804","upvoted":false,"upvotesCount":8,"text":"NoSQL","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.23":{"node":{"type":"id","generated":false,"id":"Reason:101978468639821804","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468409945643":{"id":"101978468409945643","upvoted":false,"upvotesCount":7,"text":"Integrates super easy with Sidekiq for Rails background","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.24":{"node":{"type":"id","generated":false,"id":"Reason:101978468409945643","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468591291966":{"id":"101978468591291966","upvoted":false,"upvotesCount":7,"text":"Async replication","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.25":{"node":{"type":"id","generated":false,"id":"Reason:101978468591291966","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468640622698":{"id":"101978468640622698","upvoted":false,"upvotesCount":7,"text":"Bitmaps","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.26":{"node":{"type":"id","generated":false,"id":"Reason:101978468640622698","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468641728454":{"id":"101978468641728454","upvoted":false,"upvotesCount":6,"text":"Keys with a limited time-to-live","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.27":{"node":{"type":"id","generated":false,"id":"Reason:101978468641728454","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468639919920":{"id":"101978468639919920","upvoted":false,"upvotesCount":6,"text":"Open Source","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.28":{"node":{"type":"id","generated":false,"id":"Reason:101978468639919920","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468640049470":{"id":"101978468640049470","upvoted":false,"upvotesCount":5,"text":"Strings","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.29":{"node":{"type":"id","generated":false,"id":"Reason:101978468640049470","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468641549042":{"id":"101978468641549042","upvoted":false,"upvotesCount":5,"text":"Lua scripting","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.30":{"node":{"type":"id","generated":false,"id":"Reason:101978468641549042","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468640817081":{"id":"101978468640817081","upvoted":false,"upvotesCount":4,"text":"Hyperloglogs","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.31":{"node":{"type":"id","generated":false,"id":"Reason:101978468640817081","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468673113782":{"id":"101978468673113782","upvoted":false,"upvotesCount":4,"text":"Awesomeness for Free!","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.32":{"node":{"type":"id","generated":false,"id":"Reason:101978468673113782","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468641311026":{"id":"101978468641311026","upvoted":false,"upvotesCount":3,"text":"Transactions","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.33":{"node":{"type":"id","generated":false,"id":"Reason:101978468641311026","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468591501236":{"id":"101978468591501236","upvoted":false,"upvotesCount":3,"text":"Runs server side LUA","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.34":{"node":{"type":"id","generated":false,"id":"Reason:101978468591501236","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468640891023":{"id":"101978468640891023","upvoted":false,"upvotesCount":3,"text":"outstanding performance","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.35":{"node":{"type":"id","generated":false,"id":"Reason:101978468640891023","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468641202260":{"id":"101978468641202260","upvoted":false,"upvotesCount":3,"text":"Networked","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.36":{"node":{"type":"id","generated":false,"id":"Reason:101978468641202260","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468641780831":{"id":"101978468641780831","upvoted":false,"upvotesCount":3,"text":"LRU eviction of keys","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.37":{"node":{"type":"id","generated":false,"id":"Reason:101978468641780831","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468642047965":{"id":"101978468642047965","upvoted":false,"upvotesCount":3,"text":"Written in ANSI C","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.38":{"node":{"type":"id","generated":false,"id":"Reason:101978468642047965","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468641075211":{"id":"101978468641075211","upvoted":false,"upvotesCount":3,"text":"Feature Rich","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.39":{"node":{"type":"id","generated":false,"id":"Reason:101978468641075211","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468923607533":{"id":"101978468923607533","upvoted":false,"upvotesCount":2,"text":"Performance & ease of use","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.40":{"node":{"type":"id","generated":false,"id":"Reason:101978468923607533","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468869194579":{"id":"101978468869194579","upvoted":false,"upvotesCount":2,"text":"Data structure server","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.41":{"node":{"type":"id","generated":false,"id":"Reason:101978468869194579","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469030665219":{"id":"101978469030665219","upvoted":false,"upvotesCount":1,"text":"Simple","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.42":{"node":{"type":"id","generated":false,"id":"Reason:101978469030665219","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469496169407":{"id":"101978469496169407","upvoted":false,"upvotesCount":1,"text":"Channels concept","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.43":{"node":{"type":"id","generated":false,"id":"Reason:101978469496169407","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469496344310":{"id":"101978469496344310","upvoted":false,"upvotesCount":1,"text":"Scalable","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.44":{"node":{"type":"id","generated":false,"id":"Reason:101978469496344310","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469496784491":{"id":"101978469496784491","upvoted":false,"upvotesCount":1,"text":"Temporarily kept on disk","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.45":{"node":{"type":"id","generated":false,"id":"Reason:101978469496784491","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469497088945":{"id":"101978469497088945","upvoted":false,"upvotesCount":1,"text":"Dont save data if no subscribers are found","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.46":{"node":{"type":"id","generated":false,"id":"Reason:101978469497088945","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468641929560":{"id":"101978468641929560","upvoted":false,"upvotesCount":1,"text":"Automatic failover","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.47":{"node":{"type":"id","generated":false,"id":"Reason:101978468641929560","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468690214943":{"id":"101978468690214943","upvoted":false,"upvotesCount":1,"text":"Easy to use","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.48":{"node":{"type":"id","generated":false,"id":"Reason:101978468690214943","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468627373575":{"id":"101978468627373575","upvoted":false,"upvotesCount":1,"text":"Existing Laravel Integration","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.49":{"node":{"type":"id","generated":false,"id":"Reason:101978468627373575","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468869121234":{"id":"101978468869121234","upvoted":false,"upvotesCount":1,"text":"Object [key/value] size each 500 MB","__typename":"Reason"},"$Tool:101231773854768982.pros.edges.50":{"node":{"type":"id","generated":false,"id":"Reason:101978468869121234","typename":"Reason"},"__typename":"ReasonEdge"},"$Tool:101231773854768982.pros":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.0","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.1","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.2","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.3","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.4","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.5","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.6","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.7","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.8","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.9","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.10","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.11","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.12","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.13","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.14","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.15","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.16","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.17","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.18","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.19","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.20","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.21","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.22","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.23","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.24","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.25","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.26","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.27","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.28","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.29","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.30","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.31","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.32","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.33","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.34","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.35","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.36","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.37","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.38","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.39","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.40","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.41","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.42","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.43","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.44","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.45","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.46","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.47","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.48","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.49","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.pros.edges.50","typename":"ReasonEdge"}],"__typename":"ReasonConnection"},"Reason:101978470243114129":{"id":"101978470243114129","upvoted":false,"upvotesCount":14,"text":"Cannot query objects directly","__typename":"Reason"},"$Tool:101231773854768982.cons.edges.0":{"node":{"type":"id","generated":false,"id":"Reason:101978470243114129","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:104965587129066199":{"id":"104965587129066199","upvoted":false,"upvotesCount":2,"text":"No secondary indexes for non-numeric data types","__typename":"Reason"},"$Tool:101231773854768982.cons.edges.1":{"node":{"type":"id","generated":false,"id":"Reason:104965587129066199","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:105724045344415891":{"id":"105724045344415891","upvoted":false,"upvotesCount":1,"text":"No WAL","__typename":"Reason"},"$Tool:101231773854768982.cons.edges.2":{"node":{"type":"id","generated":false,"id":"Reason:105724045344415891","typename":"Reason"},"__typename":"ReasonEdge"},"$Tool:101231773854768982.cons":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231773854768982.cons.edges.0","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.cons.edges.1","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.cons.edges.2","typename":"ReasonEdge"}],"__typename":"ReasonConnection"},"User:101232095756301757":{"id":"101232095756301757","username":"z00b","title":"CTO","companyName":"CircleCI","imageUrl":"https://img.stackshare.io/user/204369/default_792143df1db9a7c7f0ab622fd2d884d160f753fc.jpeg","thumbUrl":"https://img.stackshare.io/user/204369/thumb_792143df1db9a7c7f0ab622fd2d884d160f753fc.jpeg","displayName":"Robert Zuber","__typename":"User"},"StackDecision:102493656005301501":{"user":{"type":"id","generated":false,"id":"User:101232095756301757","typename":"User"},"company":{"type":"id","generated":true,"id":"$StackDecision:102493656005301501.company","typename":"Company"},"link":{"type":"id","generated":true,"id":"$StackDecision:102493656005301501.link","typename":"Link"},"publicId":"102493656005301501","publishedAt":"2019-07-24T00:44:35Z","id":"102493656005301501","htmlContent":"<p>We use <span class=\"tool\">MongoDB</span> as our primary #datastore. Mongo's approach to replica sets enables some fantastic patterns for operations like maintenance, backups, and #ETL.</p>\n\n<p>As we pull <span class=\"topic\">#microservices</span> from our #monolith, we are taking the opportunity to build them with their own datastores using <span class=\"tool\">PostgreSQL</span>. We also use <span class=\"tool\">Redis</span> to cache data we’d never store permanently, and to rate-limit our requests to partners’ APIs (like <span class=\"tool\">GitHub</span>).</p>\n\n<p>When we’re dealing with large blobs of immutable data (logs, artifacts, and test results), we store them in <span class=\"tool\">Amazon S3</span>. We handle any side-effects of S3’s eventual consistency model within our own code. This ensures that we deal with user requests correctly while writes are in process.</p>","viewCount":2169008,"upvotesCount":24,"services":[{"type":"id","generated":false,"id":"Tool:101231773854388643","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773853533403","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773854768982","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773410696721","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773409399220","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"$StackDecision:102493656005301501.company":{"imageUrl":"https://img.stackshare.io/company/59/default_1d293d3c2cd84b0d02876e299a11930bea63b22f.jpg","thumbUrl":"https://img.stackshare.io/company/59/thumb_1d293d3c2cd84b0d02876e299a11930bea63b22f.jpg","name":"CircleCI","path":"/companies/circleci","features":[],"__typename":"Company"},"$StackDecision:102493656005301501.link":{"url":"https://stackshare.io/circleci/update-how-circleci-processes-over-30-million-builds-per-month","title":"Update: How CircleCI Processes Over 30 Million Builds Per Month - CircleCI Tech Stack","__typename":"Link"},"$Tool:101231773854768982.stackDecisionsWithAlternatives({\"first\":2}).edges.0":{"node":{"type":"id","generated":false,"id":"StackDecision:102493656005301501","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"User:103607490214490361":{"id":"103607490214490361","username":"bryam8694","title":null,"companyName":null,"imageUrl":"https://img.stackshare.io/user/370353/default_928f93993229da90e1b2503d762169d55e88534b.jpg","thumbUrl":"https://img.stackshare.io/user/370353/thumb_928f93993229da90e1b2503d762169d55e88534b.jpg","displayName":"Bryam Rodriguez","__typename":"User"},"StackDecision:103607666193472806":{"user":{"type":"id","generated":false,"id":"User:103607490214490361","typename":"User"},"company":{"type":"id","generated":true,"id":"$StackDecision:103607666193472806.company","typename":"Company"},"link":null,"publicId":"103607666193472806","publishedAt":"2020-02-05T18:32:01Z","id":"103607666193472806","htmlContent":"<p>I'm working as one of the engineering leads in RunaHR. As our platform is a Saas, we thought It'd be good to have an API (We chose <span class=\"tool\">Ruby</span> and <span class=\"tool\">Rails</span> for this) and a SPA (built with <span class=\"tool\">React</span> and <span class=\"tool\">Redux</span> ) connected. We started the SPA with <span class=\"tool\">Create React App</span> since It's pretty easy to start.</p>\n\n<p>We use <span class=\"tool\">Jest</span> as the testing framework and <span class=\"tool\">react-testing-library</span> to test React components. In Rails we make tests using <span class=\"tool\">RSpec</span>.</p>\n\n<p>Our main database is <span class=\"tool\">PostgreSQL</span>, but we also use <span class=\"tool\">MongoDB</span> to store some type of data. We started to use <span class=\"tool\">Redis</span>  for cache and other time sensitive operations. </p>\n\n<p>We have a couple of extra projects: One is an Employee app built with <span class=\"tool\">React Native</span> and the other is an internal back office dashboard built with <span class=\"tool\">Next.js</span> for the client and <span class=\"tool\">Python</span> in the backend side.</p>\n\n<p>Since we have different frontend apps we have found useful to have <span class=\"tool\">Bit</span> to document visual components and utils in <span class=\"tool\">JavaScript</span>.</p>","viewCount":1873996,"upvotesCount":21,"services":[{"type":"id","generated":false,"id":"Tool:101231773835511567","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773835996572","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773849098825","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231775357043443","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231776176987604","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773770920543","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231778299095193","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774472965337","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773853533403","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773854388643","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773854768982","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774544144572","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231776411419473","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773837179153","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231775648895157","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773939333405","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"$StackDecision:103607666193472806.company":{"imageUrl":"https://img.stackshare.io/company/156644/default_f9e00bf9184ead44001d5f27093bb0df9c7bb4a8.jpg","thumbUrl":"https://img.stackshare.io/company/156644/thumb_f9e00bf9184ead44001d5f27093bb0df9c7bb4a8.jpg","name":"RunaHR","path":"/companies/runahr","features":[],"__typename":"Company"},"Tool:101231773835996572":{"id":"101231773835996572","name":"Rails","slug":"rails","title":"Web development that doesn't hurt","verified":false,"imageUrl":"https://img.stackshare.io/service/990/x57_Lorv.png","canonicalUrl":"/rails","path":"/rails","votes":5422,"fans":15127,"stacks":17802,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231775357043443":{"id":"101231775357043443","name":"Redux","slug":"reduxjs","title":"Predictable state container for JavaScript apps","verified":false,"imageUrl":"https://img.stackshare.io/service/4074/13142323.png","canonicalUrl":"/reduxjs","path":"/reduxjs","votes":661,"fans":24614,"stacks":26619,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231776176987604":{"id":"101231776176987604","name":"Create React App","slug":"create-react-app","title":"Create React apps with no build configuration","verified":true,"imageUrl":"https://img.stackshare.io/service/5537/oi64YzXY.jpg","canonicalUrl":"/create-react-app","path":"/create-react-app","votes":4,"fans":1246,"stacks":1012,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773770920543":{"id":"101231773770920543","name":"Jest","slug":"jest","title":"Painless JavaScript Unit Testing","verified":false,"imageUrl":"https://img.stackshare.io/service/830/jest.png","canonicalUrl":"/jest","path":"/jest","votes":170,"fans":4000,"stacks":6681,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231778299095193":{"id":"101231778299095193","name":"react-testing-library","slug":"react-testing-library","title":"A lightweight solution for testing React components","verified":false,"imageUrl":"https://img.stackshare.io/service/9787/49996085.png","canonicalUrl":"/react-testing-library","path":"/react-testing-library","votes":4,"fans":230,"stacks":241,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231774472965337":{"id":"101231774472965337","name":"RSpec","slug":"rspec","title":"Behaviour Driven Development for Ruby","verified":false,"imageUrl":"https://img.stackshare.io/service/2539/logo.png","canonicalUrl":"/rspec","path":"/rspec","votes":0,"fans":349,"stacks":1414,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231774544144572":{"id":"101231774544144572","name":"React Native","slug":"react-native","title":"A framework for building native apps with React","verified":false,"imageUrl":"https://img.stackshare.io/service/2699/KoK6gHzp.jpg","canonicalUrl":"/react-native","path":"/react-native","votes":1132,"fans":29610,"stacks":28528,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231776411419473":{"id":"101231776411419473","name":"Next.js","slug":"next-js","title":"A small framework for server-rendered universal JavaScript apps ","verified":false,"imageUrl":"https://img.stackshare.io/service/5936/nextjs.png","canonicalUrl":"/next-js","path":"/next-js","votes":284,"fans":4728,"stacks":4333,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231775648895157":{"id":"101231775648895157","name":"Bit","slug":"bit","title":"An open source tool for code sharing","verified":false,"imageUrl":"https://img.stackshare.io/service/4616/QP1hRAU5_400x400.jpg","canonicalUrl":"/bit","path":"/bit","votes":0,"fans":134,"stacks":37,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773939333405":{"id":"101231773939333405","name":"JavaScript","slug":"javascript","title":"Lightweight, interpreted, object-oriented language with first-class functions","verified":false,"imageUrl":"https://img.stackshare.io/service/1209/javascript.jpeg","canonicalUrl":"/javascript","path":"/javascript","votes":7913,"fans":262303,"stacks":283207,"following":false,"followContext":null,"__typename":"Tool"},"$Tool:101231773854768982.stackDecisionsWithAlternatives({\"first\":2}).edges.1":{"node":{"type":"id","generated":false,"id":"StackDecision:103607666193472806","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"$Tool:101231773854768982.stackDecisionsWithAlternatives({\"first\":2})":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231773854768982.stackDecisionsWithAlternatives({\"first\":2}).edges.0","typename":"StackDecisionEdge"},{"type":"id","generated":true,"id":"$Tool:101231773854768982.stackDecisionsWithAlternatives({\"first\":2}).edges.1","typename":"StackDecisionEdge"}],"__typename":"StackDecisionConnection"},"$Tool:101231773865214260.alternativeTools({\"first\":8}).edges.7":{"node":{"type":"id","generated":false,"id":"Tool:101231773854768982","typename":"Tool"},"__typename":"ToolEdge"}}</script> <!-- glamorIds: 138 --> <script type="application/json" id="ToolAlternatives-glamor-8c2fa442-f07b-48d8-a46e-c304f79306a5">["1htug8r","1yodi52","iepywa","x5hg3h","u0iaox","9ilv8v","4gnhqq","1ag7ge9","ld8qhm","11b98zt","14pk3xx","1o4togz","1drwozb","gbti5j","1ahj942","1an0suy","uw1ldh","xkasvz","atv6j6","1m8tyev","1vf0ygt","utnqcw","ds0hbm","dg4ww9","z9ms26","6uh2e7","1pwtf47","t68yd0","1rz3855","i6njnm","1dp4k20","ztg526","1srb7t4","n746ki","1v4wqws","7c9av6","6nrkpz","1mlbi0l","1cda8k4","2an9kq","5x5cr6","rsz8c","16s8o6z","i52n91","13sfqhu","1xexurq","81jah4","69zjs9","8a04gk","1m38k02","162qu2y","p797gu","12alag6","1cylxxa","6pc9xu","1j2w1cg","1b2ktnx","1mjw833","a5x1lt","1m5j888","4bpmfq","1pvkxrw","1g92dqh","1x2bey4","1cs0rzs","1j0qgmo","eemya1","3dgua6","1guve57","1ob9em9","1mpii3w","f3khu","19r489t","12i35kv","kxs423","z9c3fl","12llqor","jyk0kg","4hck59","1dgfc7p","12257h","np1rfd","1iqua1m","1krun48","bjhznw","1dnwvu3","13nf4of","xd3exe","1wr1kub","1nxoxgf","mtutfo","z63j1n","1puyxnn","13u3lpy","em9idi","guqgrw","41bx4t","83t7xw","m7giud","1to1q1s","zwwro1","1ps7r35","1w2c3xd","13hey0t","ua0sjh","8qpfeu","kb8or3","1d3wilq","ljm4wn","mwikcm","1jltg37","1489hth","8wh4b7","pltn6z","1hhgtx3","rpzmwi","5f7045","3k44bn","1qckosq","1a4uubp","q4ncy","1mj0hbk","1dnnpo5","ubpjqb","gpa5xw","1erkkk4","a55l86","usifiy","6t66tf","1x4ysa3","1bn5mmw","1v4bhi8","6wyd29","19dpmz","v6oua5","16r6zz5","f2odf3","1m02by6"]</script> <style>@-webkit-keyframes animation_1htug8r{to{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@-moz-keyframes animation_1htug8r{to{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@-o-keyframes animation_1htug8r{to{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@keyframes animation_1htug8r{to{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@-webkit-keyframes animation_1yodi52{0%{background-position:0 0;}100%{background-position:100em 0;}}@-moz-keyframes animation_1yodi52{0%{background-position:0 0;}100%{background-position:100em 0;}}@-o-keyframes animation_1yodi52{0%{background-position:0 0;}100%{background-position:100em 0;}}@keyframes animation_1yodi52{0%{background-position:0 0;}100%{background-position:100em 0;}}@-webkit-keyframes animation_iepywa{0%, 100%{opacity:0;}50%{opacity:1;}}@-moz-keyframes animation_iepywa{0%, 100%{opacity:0;}50%{opacity:1;}}@-o-keyframes animation_iepywa{0%, 100%{opacity:0;}50%{opacity:1;}}@keyframes animation_iepywa{0%, 100%{opacity:0;}50%{opacity:1;}}@-webkit-keyframes animation_x5hg3h{100%{stroke-dashoffset:0;}}@-moz-keyframes animation_x5hg3h{100%{stroke-dashoffset:0;}}@-o-keyframes animation_x5hg3h{100%{stroke-dashoffset:0;}}@keyframes animation_x5hg3h{100%{stroke-dashoffset:0;}}@-webkit-keyframes animation_u0iaox{0%, 100%{transform:none;-webkit-transform:none;}50%{transform:scale3d(1.1, 1.1, 1);-webkit-transform:scale3d(1.1, 1.1, 1);}}@-moz-keyframes animation_u0iaox{0%, 100%{transform:none;-webkit-transform:none;}50%{transform:scale3d(1.1, 1.1, 1);-webkit-transform:scale3d(1.1, 1.1, 1);}}@-o-keyframes animation_u0iaox{0%, 100%{transform:none;-webkit-transform:none;}50%{transform:scale3d(1.1, 1.1, 1);-webkit-transform:scale3d(1.1, 1.1, 1);}}@keyframes animation_u0iaox{0%, 100%{transform:none;-webkit-transform:none;}50%{transform:scale3d(1.1, 1.1, 1);-webkit-transform:scale3d(1.1, 1.1, 1);}}@-webkit-keyframes animation_9ilv8v{100%{box-shadow:inset 0px 0px 0px 30px #068dfe;}}@-moz-keyframes animation_9ilv8v{100%{box-shadow:inset 0px 0px 0px 30px #068dfe;}}@-o-keyframes animation_9ilv8v{100%{box-shadow:inset 0px 0px 0px 30px #068dfe;}}@keyframes animation_9ilv8v{100%{box-shadow:inset 0px 0px 0px 30px #068dfe;}}.css-4gnhqq,[data-css-4gnhqq]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:space-between;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-webkit-box-align:center;-webkit-align-items:center;}.css-1ag7ge9,[data-css-1ag7ge9]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;flex-wrap:wrap;-webkit-box-lines:multiple;-webkit-flex-wrap:wrap;}@media only screen and (max-width: 812px){.css-1ag7ge9 > a,[data-css-1ag7ge9] > a{text-align:center;}}.css-ld8qhm,[data-css-ld8qhm]{text-decoration:none;cursor:pointer;color:#c2c2c2;}.css-ld8qhm:hover,[data-css-ld8qhm]:hover{color:#068dfe;}.css-11b98zt,[data-css-11b98zt]{color:#c2c2c2;margin:0 5px 0 5px;}.css-11b98zt::after,[data-css-11b98zt]::after{content:"/";}.css-14pk3xx,[data-css-14pk3xx]{height:32px;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:center;align-items:center;border-radius:2px;border:1px solid #068dfe;font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-size:13px;font-weight:400;letter-spacing:0.8px;background-color:#068dfe;color:#fff;text-decoration:none;cursor:pointer;-webkit-font-smoothing:antialiased;padding-top:0;padding-bottom:0;padding-left:8px;padding-right:8px;width:98px;outline:none;flex-grow:0;flex-shrink:0;margin-right:10px;-webkit-box-pack:center;-webkit-justify-content:center;-webkit-box-align:center;-webkit-align-items:center;-webkit-flex-grow:0;-webkit-flex-shrink:0;}.css-14pk3xx:hover,[data-css-14pk3xx]:hover{background-color:rgba(6,141,254,0.8);border-color:rgba(6,141,254,0.79);color:#fff;}.css-1o4togz,[data-css-1o4togz]{height:32px;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:center;align-items:center;border-radius:2px;border:1px solid #068dfe;font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-size:13px;font-weight:400;letter-spacing:0.8px;background-color:#068dfe;color:#fff;text-decoration:none;cursor:pointer;-webkit-font-smoothing:antialiased;padding-top:0;padding-bottom:0;padding-left:16px;padding-right:16px;width:auto;outline:none;flex-grow:0;flex-shrink:0;-webkit-box-pack:center;-webkit-justify-content:center;-webkit-box-align:center;-webkit-align-items:center;-webkit-flex-grow:0;-webkit-flex-shrink:0;}.css-1o4togz:hover,[data-css-1o4togz]:hover{background-color:rgba(6,141,254,0.8);border-color:rgba(6,141,254,0.79);color:#fff;}.css-1drwozb,[data-css-1drwozb]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;width:80%;justify-content:space-between;align-items:center;order:4;-webkit-box-pack:justify;-webkit-justify-content:space-between;-webkit-box-align:center;-webkit-align-items:center;-webkit-order:4;}@media only screen and (max-width: 480px){.css-1drwozb,[data-css-1drwozb]{margin-bottom:20px;}}.css-gbti5j,[data-css-gbti5j]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;flex-direction:column;align-items:center;position:relative;color:#707070;font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;}.css-gbti5j>:first-child,[data-css-gbti5j]>:first-child{margin-bottom:5px;}.css-gbti5j>span,[data-css-gbti5j]>span{color:#333;line-height:1.22;letter-spacing:0.8px;font-weight:600;font-size:18px;}.css-1ahj942,[data-css-1ahj942]{border-left:1px solid #e1e1e1;width:1px;height:36px;}.css-1an0suy,[data-css-1an0suy]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;flex-direction:column;align-items:center;position:relative;color:#707070;font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;transition:color 0.6s ease-in-out;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;-webkit-transition:color 0.6s ease-in-out;-moz-transition:color 0.6s ease-in-out;}.css-1an0suy>:first-child,[data-css-1an0suy]>:first-child{margin-bottom:5px;}.css-1an0suy>span,[data-css-1an0suy]>span{color:#333;line-height:1.22;letter-spacing:0.8px;font-weight:600;font-size:18px;}.css-1an0suy div,[data-css-1an0suy] div{position:absolute;top:-15px;right:0;left:0;text-align:center;font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:600;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#45C57C;opacity:0;animation:none;-webkit-animation:none;}.css-uw1ldh,[data-css-uw1ldh]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.7;letter-spacing:0.2px;-webkit-font-smoothing:antialiased;border-bottom:1px solid;border-color:#e1e1e1;padding:10px 0 20px 0;width:100%;}.css-xkasvz,[data-css-xkasvz]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;padding:20px 0;width:100%;}.css-atv6j6,[data-css-atv6j6]{margin-top:5px;}.css-1m8tyev,[data-css-1m8tyev]{position:relative;}.css-1m8tyev a,[data-css-1m8tyev] a{display:inline-block;}.css-1m8tyev img,[data-css-1m8tyev] img{width:31px;height:31px;border-radius:50%;}.css-1m8tyev> svg,[data-css-1m8tyev]> svg{width:31px;height:31px;}.css-1vf0ygt,[data-css-1vf0ygt]{margin-left:15px;width:100%;}.css-1vf0ygt a,[data-css-1vf0ygt] a{color:#333;}.css-1vf0ygt a:hover,[data-css-1vf0ygt] a:hover{color:#068dfe;}.css-utnqcw,[data-css-utnqcw]{font-weight:bold;font-size:14px;width:100%;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:space-between;-webkit-box-pack:justify;-webkit-justify-content:space-between;}.css-ds0hbm,[data-css-ds0hbm]{color:#4a4a4a;}.css-dg4ww9,[data-css-dg4ww9]{width:100%;margin-top:0;margin-bottom:18px;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;align-items:center;font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;flex-wrap:wrap;-webkit-box-align:center;-webkit-align-items:center;-webkit-box-lines:multiple;-webkit-flex-wrap:wrap;}.css-dg4ww9 > svg:first-of-type,[data-css-dg4ww9] > svg:first-of-type{margin-right:7px;}.css-dg4ww9 > a,[data-css-dg4ww9] > a{text-decoration:none;margin-right:7px;}.css-dg4ww9 > a:last-of-type,[data-css-dg4ww9] > a:last-of-type{text-decoration:none;margin-right:0;}.css-dg4ww9 > *,[data-css-dg4ww9] > *{margin-bottom:13px;}.css-dg4ww9 > a > span:last-of-type,[data-css-dg4ww9] > a > span:last-of-type{font-size:14px;}.css-z9ms26,[data-css-z9ms26]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:600;font-size:14px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#2d2d2d;margin-right:7px;}.css-6uh2e7,[data-css-6uh2e7]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:14px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#939393;margin-right:7px;}.css-1pwtf47,[data-css-1pwtf47]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;flex-direction:row;align-items:center;text-decoration:none;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-webkit-box-align:center;-webkit-align-items:center;}.css-t68yd0,[data-css-t68yd0]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;position:relative;justify-content:center;align-items:center;width:22px;min-width:22px;height:22px;min-height:22px;background-color:#fff;border-radius:3.1px;border:0;-webkit-box-pack:center;-webkit-justify-content:center;-webkit-box-align:center;-webkit-align-items:center;}.css-t68yd0:hover,[data-css-t68yd0]:hover{background-color:#fff;}.css-1rz3855,[data-css-1rz3855]{border:solid 1px #c2c2c2;border-radius:3.1px;height:22px;width:22px;}.css-i6njnm,[data-css-i6njnm]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;margin-left:7px;color:#000;}.css-1dp4k20,[data-css-1dp4k20]{height:75px;position:relative;overflow:hidden;}.css-1dp4k20:after,[data-css-1dp4k20]:after{content:" ";position:absolute;bottom:0;left:0;width:100%;height:30px;background:-webkit-linear-gradient(to bottom, rgba(255,255,255,0), #fff 80%); background: -moz-linear-gradient(to bottom, rgba(255,255,255,0), #fff 80%); background: linear-gradient(to bottom, rgba(255,255,255,0), #fff 80%);}.css-ztg526 .topic,[data-css-ztg526] .topic,.css-ztg526 .tool,[data-css-ztg526] .tool{font-weight:normal;background:rgba(6,141,254,0.15);padding:0px 2px;}.css-ztg526 a,[data-css-ztg526] a,.css-ztg526 a:visited,[data-css-ztg526] a:visited{color:#068dfe;text-decoration:underline;cursor:pointer;}.css-ztg526 a:hover,[data-css-ztg526] a:hover,.css-ztg526 a:visited:hover,[data-css-ztg526] a:visited:hover{text-decoration:underline;}.css-ztg526 pre,[data-css-ztg526] pre{white-space:pre-wrap;word-wrap:break-word;background:#fafafa;color:#333;margin:15px 0;font-family:monospace;padding:10px;border-radius:0;}.css-ztg526 code,[data-css-ztg526] code{border-radius:0;background:#fafafa;color:#333;}.css-1srb7t4,[data-css-1srb7t4]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.6666666666666667;letter-spacing:normal;-webkit-font-smoothing:antialiased;width:100%;text-align:center;text-decoration:underline;cursor:pointer;color:#333;}.css-1srb7t4:hover,[data-css-1srb7t4]:hover{color:#333;text-decoration:none;}.css-n746ki,[data-css-n746ki]{margin-top:30px;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:center;z-index:1;-webkit-box-pack:center;-webkit-justify-content:center;}.css-1v4wqws,[data-css-1v4wqws]{display:block;flex-direction:none;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:none;}.css-7c9av6,[data-css-7c9av6]{margin:0;padding:0;}.css-6nrkpz,[data-css-6nrkpz]{list-style:none;}.css-1mlbi0l,[data-css-1mlbi0l]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;align-items:center;margin-bottom:15px;flex-shrink:0;cursor:default;-webkit-box-align:center;-webkit-align-items:center;-webkit-flex-shrink:0;}.css-1mlbi0l > div:first-of-type,[data-css-1mlbi0l] > div:first-of-type{width:40px;flex-shrink:0;-webkit-flex-shrink:0;}.css-1cda8k4,[data-css-1cda8k4]{display:inline-block;border-radius:2px;cursor:pointer;background-color:#fff;border:1px solid #c2c2c2;color:#4a4a4a;}.css-2an9kq,[data-css-2an9kq]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;flex-direction:column;justify-content:center;align-items:center;padding-top:5px;padding-left:8px;padding-right:8px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-webkit-box-align:center;-webkit-align-items:center;}.css-5x5cr6,[data-css-5x5cr6]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-size:12px;font-weight:600;line-height:1.83;letter-spacing:0.5px;}.css-rsz8c,[data-css-rsz8c]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;margin-left:10px;text-decoration:none;color:#000;}.css-16s8o6z,[data-css-16s8o6z]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;height:100%;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;align-items:center;justify-content:center;fontsize:14px;color:#c2c2c2;font-style:italic;text-align:center;-webkit-box-align:center;-webkit-align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;}.css-i52n91,[data-css-i52n91]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:600;font-size:18px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#333;margin:0;}.css-13sfqhu,[data-css-13sfqhu]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.69;letter-spacing:normal;-webkit-font-smoothing:antialiased;margin-top:8px;color:#707070;}.css-1xexurq,[data-css-1xexurq]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;text-decoration:none;color:#068dfe;margin-top:10px;}.css-81jah4,[data-css-81jah4]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:center;margin:50px 0;-webkit-box-pack:center;-webkit-justify-content:center;}.css-69zjs9,[data-css-69zjs9]{background:#f7f7f7;width:100%;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:center;padding-top:68px;padding-bottom:68px;-webkit-box-pack:center;-webkit-justify-content:center;}@media only screen and (max-width: 812px){.css-69zjs9,[data-css-69zjs9]{padding-top:30px;padding-bottom:50px;}}.css-8a04gk,[data-css-8a04gk]{width:1140px;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:space-between;padding-left:20px;padding-right:20px;-webkit-box-pack:justify;-webkit-justify-content:space-between;}@media only screen and (max-width: 812px){.css-8a04gk,[data-css-8a04gk]{flex-direction:column;justify-content:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;}}.css-1m38k02,[data-css-1m38k02]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#333;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;flex-direction:column;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;}@media only screen and (max-width: 812px){.css-1m38k02,[data-css-1m38k02]{text-align:center;}}.css-162qu2y,[data-css-162qu2y]{font-size:20px;font-weight:600;letter-spacing:0.4px;}.css-p797gu,[data-css-p797gu]{font-size:13px;line-height:2.07;letter-spacing:0.3px;text-decoration:none;color:#333;}.css-p797gu:hover,[data-css-p797gu]:hover{color:#068dfe;}@media only screen and (max-width: 768px){.css-p797gu,[data-css-p797gu]{font-size:14px;}}.css-12alag6,[data-css-12alag6]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;align-items:center;-webkit-box-align:center;-webkit-align-items:center;}.css-1cylxxa,[data-css-1cylxxa]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:600;font-size:25px;line-height:1;letter-spacing:normal;-webkit-font-smoothing:antialiased;padding:0;margin:0;color:#333;}.css-6pc9xu,[data-css-6pc9xu]{margin-left:5px;width:15px;height:15px;}.css-1j2w1cg,[data-css-1j2w1cg]{cursor:pointer;text-decoration:none;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;align-items:center;margin-right:0;-webkit-box-align:center;-webkit-align-items:center;}.css-1j2w1cg > div:last-of-type,[data-css-1j2w1cg] > div:last-of-type{margin-right:0;}.css-1b2ktnx,[data-css-1b2ktnx]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:600;font-size:14px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#2d2d2d;margin-right:7px;margin-left:7px;}.css-1mjw833,[data-css-1mjw833]{max-width:100%;}.css-a5x1lt,[data-css-a5x1lt]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;align-items:center;-webkit-box-align:center;-webkit-align-items:center;}@media only screen and (max-width: 480px){.css-a5x1lt,[data-css-a5x1lt]{flex-direction:column;margin-bottom:15px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;}}.css-1m5j888,[data-css-1m5j888]{height:110px;width:110px;margin-right:25px;margin-bottom:10px;border-radius:4px;border:1px solid #e1e1e1;}@media only screen and (max-width: 480px){.css-1m5j888,[data-css-1m5j888]{margin-right:0;height:70px;width:70px;}}.css-4bpmfq,[data-css-4bpmfq]{width:100%;max-width:500px;}@media only screen and (max-width: 480px){.css-4bpmfq,[data-css-4bpmfq]{text-align:center;}}.css-1pvkxrw,[data-css-1pvkxrw]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;align-items:center;-webkit-box-align:center;-webkit-align-items:center;}.css-1pvkxrw .fork,[data-css-1pvkxrw] .fork{margin-top:5px;}@media only screen and (max-width: 480px){.css-1pvkxrw,[data-css-1pvkxrw]{justify-content:center;-webkit-box-pack:center;-webkit-justify-content:center;}}.css-1g92dqh,[data-css-1g92dqh]{color:#707070;padding:5px 0;}.css-1x2bey4,[data-css-1x2bey4]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#707070;}.css-1cs0rzs,[data-css-1cs0rzs]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;align-items:flex-start;width:450px;-webkit-box-align:start;-webkit-align-items:flex-start;}@media only screen and (max-width: 480px){.css-1cs0rzs,[data-css-1cs0rzs]{width:100%;}}.css-1j0qgmo,[data-css-1j0qgmo]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;align-items:flex-start;width:100%;justify-content:space-between;-webkit-box-align:start;-webkit-align-items:flex-start;-webkit-box-pack:justify;-webkit-justify-content:space-between;}@media only screen and (max-width: 480px){.css-1j0qgmo,[data-css-1j0qgmo]{flex-wrap:wrap;width:100%;justify-content:center;margin:0 auto;-webkit-box-lines:multiple;-webkit-flex-wrap:wrap;-webkit-box-pack:center;-webkit-justify-content:center;}}.css-eemya1,[data-css-eemya1]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:12px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#008FF9;}.css-eemya1 a,[data-css-eemya1] a, .css-eemya1 a:hover, [data-css-eemya1] a:hover, .css-eemya1 a:visited, [data-css-eemya1] a:visited{color:#707070;text-decoration:none;}.css-3dgua6,[data-css-3dgua6]{display:none;}@media only screen and (max-width: 480px){.css-3dgua6,[data-css-3dgua6]{display:block;}}.css-1guve57,[data-css-1guve57]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;}@media only screen and (max-width: 480px){.css-1guve57,[data-css-1guve57]{display:none;}}.css-1ob9em9,[data-css-1ob9em9]{max-width:225px;margin:0 auto;width:100%;}.css-1ob9em9 > button,[data-css-1ob9em9] > button{width:100%;margin:auto;padding-left:16px;padding-right:16px;}.css-1mpii3w,[data-css-1mpii3w]{height:auto;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:center;align-items:center;border-radius:2px;border:1px solid #f87a46;font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-size:13px;font-weight:400;letter-spacing:0.8px;background-color:#f87a46;color:#fff;text-decoration:none;cursor:pointer;-webkit-font-smoothing:antialiased;padding-top:0;padding-bottom:0;padding-left:16px;padding-right:16px;width:auto;outline:none;line-height:20px;min-height:32px;-webkit-box-pack:center;-webkit-justify-content:center;-webkit-box-align:center;-webkit-align-items:center;}.css-1mpii3w:hover,[data-css-1mpii3w]:hover{background-color:rgba(248,122,70,0.8);border-color:rgba(248,122,70,0.8);color:#fff;}.css-f3khu,[data-css-f3khu]{margin:10px 0;}.css-19r489t,[data-css-19r489t]{border-bottom:2px solid #e1e1e1;width:100%;}.css-12i35kv,[data-css-12i35kv]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:space-between;margin:10px 0 10px 0;-webkit-box-pack:justify;-webkit-justify-content:space-between;}@media only screen and (max-width: 480px){.css-12i35kv,[data-css-12i35kv]{align-items:center;flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;}}.css-kxs423,[data-css-kxs423]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;align-items:flex-start;padding:0 8px 0 24px;margin:5px 8px 0 0;flex-direction:column;border-left:1px solid #e1e1e1;gap:9px;-webkit-box-align:start;-webkit-align-items:flex-start;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;}.css-kxs423 a,[data-css-kxs423] a, .css-kxs423 span, [data-css-kxs423] span{padding-right:8px;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;flex-wrap:nowrap;flex:2;align-items:center;-webkit-box-lines:nowrap;-webkit-flex-wrap:nowrap;-webkit-flex:2;-webkit-box-align:center;-webkit-align-items:center;}.css-kxs423 a div,[data-css-kxs423] a div, .css-kxs423 span div, [data-css-kxs423] span div{text-align:initial;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.css-kxs423 div > span,[data-css-kxs423] div > span{width:90px;}.css-kxs423 a,[data-css-kxs423] a{text-decoration:none;}.css-kxs423 svg,[data-css-kxs423] svg{margin-right:8px;position:relative;top:2px;width:14px;height:14px;}.css-kxs423 a:first-child > svg,[data-css-kxs423] a:first-child > svg{margin-left:0;}.css-kxs423 a:nth-last-child(2),[data-css-kxs423] a:nth-last-child(2), .css-kxs423 span:nth-last-child(2), [data-css-kxs423] span:nth-last-child(2){padding-right:0;}@media only screen and (max-width: 480px){.css-kxs423,[data-css-kxs423]{width:100%;padding-right:0;display:grid;grid-template-columns:48% 48%;grid-gap:11px;-ms-grid-template-columns:48% 48%;-ms-grid-gap:11px;}.css-kxs423 a,[data-css-kxs423] a, .css-kxs423 span, [data-css-kxs423] span{padding-right:0;}.css-kxs423 a,[data-css-kxs423] a{height:40px;border:1px solid #dedede;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;align-items:center;justify-content:center;-webkit-box-align:center;-webkit-align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;}.css-kxs423 svg,[data-css-kxs423] svg{margin-left:0;}.css-kxs423 a:nth-last-child(2),[data-css-kxs423] a:nth-last-child(2), .css-kxs423 span:nth-last-child(2), [data-css-kxs423] span:nth-last-child(2){padding-right:0;}.css-kxs423 a:nth-last-child(2),[data-css-kxs423] a:nth-last-child(2){border-right:1px solid #dedede;}}.css-z9c3fl,[data-css-z9c3fl]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;position:relative;}.css-12llqor,[data-css-12llqor]{width:260px;margin-left:20px;margin-bottom:25px;}.css-jyk0kg,[data-css-jyk0kg]{position:relative;width:260px;height:100%;padding-top:30px;}.css-jyk0kg > div,[data-css-jyk0kg] > div{position:absolute;bottom:0;right:0;width:100%;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;flex-flow:column nowrap;justify-content:flex-end;align-items:stretch;margin-bottom:20px;-webkit-flex-flow:column nowrap;-webkit-box-pack:end;-webkit-justify-content:flex-end;-webkit-box-align:stretch;-webkit-align-items:stretch;}.css-jyk0kg > div > div:last-of-type > div ,[data-css-jyk0kg] > div > div:last-of-type > div {margin:0;max-width:100%;}.css-jyk0kg > div a,[data-css-jyk0kg] > div a{max-width:100%;}.css-jyk0kg > div > * + *,[data-css-jyk0kg] > div > * + *{margin-top:10px;}@media only screen and (max-width: 768px){.css-jyk0kg,[data-css-jyk0kg]{width:100%;margin:20px 0 0 0;padding:0;}}.css-4hck59,[data-css-4hck59]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-webkit-box-align:center;-webkit-align-items:center;}.css-1dgfc7p,[data-css-1dgfc7p]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:space-between;-webkit-box-pack:justify;-webkit-justify-content:space-between;}.css-1dgfc7p > button,[data-css-1dgfc7p] > button{width:48%;margin-right:10px;}.css-1dgfc7p > button:last-child,[data-css-1dgfc7p] > button:last-child{margin:0;}.css-12257h,[data-css-12257h]{margin:25px 0;}.css-np1rfd,[data-css-np1rfd]{width:70px;height:70px;border:1px solid #e1e1e1;border-radius:4px;}@media only screen and (max-width: 480px){.css-np1rfd,[data-css-np1rfd]{width:60px;height:60px;}}.css-1iqua1m,[data-css-1iqua1m]{height:32px;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:center;align-items:center;border-radius:2px;border:1px solid #068dfe;font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-size:13px;font-weight:400;letter-spacing:0.8px;background-color:#068dfe;color:#fff;text-decoration:none;cursor:pointer;-webkit-font-smoothing:antialiased;padding-top:0;padding-bottom:0;padding-left:16px;padding-right:16px;width:auto;outline:none;-webkit-box-pack:center;-webkit-justify-content:center;-webkit-box-align:center;-webkit-align-items:center;}.css-1iqua1m:hover,[data-css-1iqua1m]:hover{background-color:rgba(6,141,254,0.8);border-color:rgba(6,141,254,0.79);color:#fff;}.css-1krun48 path,[data-css-1krun48] path{fill:#068dfe;}.css-bjhznw,[data-css-bjhznw]{color:#333;}.css-bjhznw:hover,[data-css-bjhznw]:hover{color:#068dfe;text-decoration:underline;}.css-1dnwvu3,[data-css-1dnwvu3]{text-decoration:none;}.css-13nf4of,[data-css-13nf4of]{margin:15px 0;border-top:solid 1px #e1e1e1;border-bottom:solid 1px #e1e1e1;padding:15px 0;}.css-13nf4of a,[data-css-13nf4of] a{color:#333;text-decoration:underline;}.css-xd3exe,[data-css-xd3exe]{margin-right:5px;}.css-1wr1kub,[data-css-1wr1kub]{width:100%;background:#f9f9f9;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:center;flex-direction:column;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;}.css-1nxoxgf,[data-css-1nxoxgf]{width:100%;background:#fff;}.css-mtutfo,[data-css-mtutfo]{width:100%;height:100%;max-width:1170px;padding-left:15px;padding-right:15px;margin:0 auto;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:initial;flex-direction:column;-webkit-box-pack:initial;-webkit-justify-content:initial;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;}.css-z63j1n,[data-css-z63j1n]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;width:100%;justify-content:flex-end;margin-top:40px;-webkit-box-pack:end;-webkit-justify-content:flex-end;}.css-1puyxnn,[data-css-1puyxnn]{width:100%;height:100%;padding:20px 15px 0;max-width:1170px;min-height:100vh;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:initial;flex-direction:column;-webkit-box-pack:initial;-webkit-justify-content:initial;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;}.css-13u3lpy,[data-css-13u3lpy]{margin-top:20px;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:center;flex-direction:row;-webkit-box-pack:center;-webkit-justify-content:center;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;}.css-em9idi,[data-css-em9idi]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;margin-left:auto;min-width:280px;}.css-guqgrw,[data-css-guqgrw]{width:100%;}@media only screen and (max-width: 480px){.css-guqgrw,[data-css-guqgrw]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:initial;flex-direction:column;align-items:center;-webkit-box-pack:initial;-webkit-justify-content:initial;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;}}.css-41bx4t,[data-css-41bx4t]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:600;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#a1a1a1;text-transform:uppercase;margin-bottom:10px;}.css-83t7xw>ul>li,[data-css-83t7xw]>ul>li{width:50%;margin-bottom:30px;padding-right:30px;}@media only screen and (max-width: 480px){.css-83t7xw>ul>li,[data-css-83t7xw]>ul>li{width:100%;padding-right:0;}}.css-m7giud,[data-css-m7giud]{padding:0;max-width:860px;justify-content:space-between;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;flex-wrap:wrap;text-align:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-webkit-box-lines:multiple;-webkit-flex-wrap:wrap;}.css-1to1q1s,[data-css-1to1q1s]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;list-style-type:none;color:#707070;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;}.css-1to1q1s:hover,[data-css-1to1q1s]:hover{color:#068dfe;}.css-zwwro1,[data-css-zwwro1]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;flex-direction:column;margin-left:18px;justify-content:center;text-align:initial;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;}.css-1ps7r35,[data-css-1ps7r35]{font-size:12px;margin:5px 0;font-weight:600;letter-spacing:0.17px;color:#333;}.css-1w2c3xd,[data-css-1w2c3xd]{font-size:11px;overflow:hidden;margin:0;line-height:1.64;color:#707070;}.css-1w2c3xd > span,[data-css-1w2c3xd] > span{display:none;}.css-13hey0t,[data-css-13hey0t]{width:100%;padding-bottom:80px;}@media only screen and (max-width: 480px){.css-13hey0t,[data-css-13hey0t]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:initial;flex-direction:column;align-items:center;-webkit-box-pack:initial;-webkit-justify-content:initial;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;}}.css-ua0sjh,[data-css-ua0sjh]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:600;font-size:18px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#333;}@media only screen and (max-width: 768px){.css-ua0sjh,[data-css-ua0sjh]{align-self:flex-start;margin-bottom:25px;-webkit-align-self:flex-start;}}.css-8qpfeu,[data-css-8qpfeu]{width:100%;padding:25px 0;margin-bottom:20px;background:#fff;border-radius:4px;box-shadow:0 1px 0 0 #e1e1e1;border:1px solid #e1e1e1;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:initial;flex-direction:column;align-items:center;-webkit-box-pack:initial;-webkit-justify-content:initial;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;}@media only screen and (max-width: 480px){.css-8qpfeu,[data-css-8qpfeu]{border:solid 1px #e1e1e1;border-radius:4px;box-shadow:none;margin-bottom:20px;padding:10px;padding-top:35px;}}.css-kb8or3,[data-css-kb8or3]{width:100%;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:initial;flex-direction:column;-webkit-box-pack:initial;-webkit-justify-content:initial;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;}.css-1d3wilq,[data-css-1d3wilq]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:space-between;flex-direction:row;align-items:center;width:100%;padding:0 20px;-webkit-box-pack:justify;-webkit-justify-content:space-between;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-webkit-box-align:center;-webkit-align-items:center;}@media only screen and (max-width: 480px){.css-1d3wilq,[data-css-1d3wilq]{padding:0;flex-direction:column;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;}}.css-ljm4wn,[data-css-ljm4wn]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:initial;flex-direction:row;align-items:center;-webkit-box-pack:initial;-webkit-justify-content:initial;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-webkit-box-align:center;-webkit-align-items:center;}@media only screen and (max-width: 480px){.css-ljm4wn,[data-css-ljm4wn]{flex-direction:column;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;}}.css-mwikcm,[data-css-mwikcm]{width:110px;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:center;flex-direction:row;-webkit-box-pack:center;-webkit-justify-content:center;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;}.css-1jltg37,[data-css-1jltg37]{text-decoration:none;cursor:pointer;color:#333;width:70px;height:70px;margin-right:20px;border-radius:2px;border:1px solid #e1e1e1;}.css-1jltg37:hover,[data-css-1jltg37]:hover, .css-1jltg37:focus, [data-css-1jltg37]:focus{color:#068dfe;}@media only screen and (max-width: 768px){.css-1jltg37,[data-css-1jltg37]{margin-right:initial;width:80px;height:80px;}}.css-1489hth,[data-css-1489hth]{width:68px;height:68px;}@media only screen and (max-width: 768px){.css-1489hth,[data-css-1489hth]{width:78px;height:78px;}}.css-8wh4b7,[data-css-8wh4b7]{height:100%;width:100%;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:initial;flex-direction:column;-webkit-box-pack:initial;-webkit-justify-content:initial;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;}@media only screen and (max-width: 768px){.css-8wh4b7,[data-css-8wh4b7]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:initial;flex-direction:column;align-items:center;-webkit-box-pack:initial;-webkit-justify-content:initial;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;}}.css-pltn6z,[data-css-pltn6z]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:600;font-size:18px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;margin:0;}@media only screen and (max-width: 768px){.css-pltn6z,[data-css-pltn6z]{margin:15px auto;}}.css-1hhgtx3,[data-css-1hhgtx3]{text-decoration:none;cursor:pointer;color:#333;}.css-1hhgtx3:hover,[data-css-1hhgtx3]:hover, .css-1hhgtx3:focus, [data-css-1hhgtx3]:focus{color:#068dfe;}.css-rpzmwi,[data-css-rpzmwi]{padding:5px 0;}@media only screen and (max-width: 768px){.css-rpzmwi,[data-css-rpzmwi]{display:none;}}.css-5f7045,[data-css-5f7045]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;align-items:center;margin-right:28px;-webkit-box-align:center;-webkit-align-items:center;}.css-3k44bn,[data-css-3k44bn]{height:23px;width:23px;}.css-1qckosq,[data-css-1qckosq]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:600;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;fonst-size:15px;color:#333;margin-left:5px;}.css-1a4uubp,[data-css-1a4uubp]{position:relative;top:3px;}.css-q4ncy,[data-css-q4ncy]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:14px;line-height:1.5;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#707070;}@media only screen and (max-width: 768px){.css-q4ncy,[data-css-q4ncy]{text-align:center;margin:20px 0;}}.css-1mj0hbk,[data-css-1mj0hbk]{display:none;}@media only screen and (max-width: 768px){.css-1mj0hbk,[data-css-1mj0hbk]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;width:100%;margin-bottom:10px;}.css-1mj0hbk > div,[data-css-1mj0hbk] > div{margin:0 auto;}}.css-1dnnpo5,[data-css-1dnnpo5]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:initial;flex-direction:column;align-items:center;-webkit-box-pack:initial;-webkit-justify-content:initial;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;}@media only screen and (max-width: 480px){.css-1dnnpo5,[data-css-1dnnpo5]{width:100%;}}.css-ubpjqb,[data-css-ubpjqb]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;width:100%;padding:10px 0;}.css-ubpjqb > button,[data-css-ubpjqb] > button{width:125px;}@media only screen and (max-width: 768px){.css-ubpjqb,[data-css-ubpjqb]{justify-content:space-between;-webkit-box-pack:justify;-webkit-justify-content:space-between;}.css-ubpjqb > button,[data-css-ubpjqb] > button{width:48%;margin:0;}}.css-gpa5xw,[data-css-gpa5xw]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#707070;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;flex-direction:column;margin-left:0;margin-right:0;width:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;}.css-gpa5xw strong,[data-css-gpa5xw] strong{color:#333;}.css-gpa5xw:last-child > div,[data-css-gpa5xw]:last-child > div{margin:0;max-width:260px;}@media only screen and (max-width: 480px){.css-gpa5xw,[data-css-gpa5xw]{padding:0;box-sizing:border-box;}}@media only screen and (max-width: 812px){.css-gpa5xw > div,[data-css-gpa5xw] > div{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:center;-webkit-box-pack:center;-webkit-justify-content:center;}}@media only screen and (max-width: 768px){.css-gpa5xw:last-child > div,[data-css-gpa5xw]:last-child > div{margin:0;max-width:100%;}}.css-1erkkk4,[data-css-1erkkk4]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;display:grid;grid-template-columns:33% 33% 33%;margin-top:28px;margin-right:20px;margin-left:20px;-ms-grid-template-columns:33% 33% 33%;}@media only screen and (max-width: 480px){.css-1erkkk4,[data-css-1erkkk4]{display:block;margin:0;}}.css-a55l86,[data-css-a55l86]{width:100%;padding:5px;min-height:240px;}@media only screen and (max-width: 1199px){.css-a55l86,[data-css-a55l86]{border-right:none;}}@media only screen and (max-width: 768px){.css-a55l86,[data-css-a55l86]{border:0;margin-top:30px;width:auto;}}@media only screen and (max-width: 480px){.css-a55l86,[data-css-a55l86]{padding:0;}}.css-usifiy,[data-css-usifiy]{height:42px;border-radius:4px;background-color:#f8f8f8;font-size:13px;font-weight:600;line-height:1.08;letter-spacing:0.66px;color:#707070;padding-left:20px;margin-bottom:15px;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;align-items:center;-webkit-box-align:center;-webkit-align-items:center;}.css-6t66tf,[data-css-6t66tf]{margin-left:15px;}@media only screen and (max-width: 480px){.css-6t66tf,[data-css-6t66tf]{margin-left:0;}}.css-1x4ysa3,[data-css-1x4ysa3]{position:relative;overflow-y:scroll;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;flex-grow:1;height:160px;max-height:auto;flex-direction:column;flex-wrap:nowrap;-webkit-flex-grow:1;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-webkit-box-lines:nowrap;-webkit-flex-wrap:nowrap;}.css-1x4ysa3::-webkit-scrollbar,[data-css-1x4ysa3]::-webkit-scrollbar{width:4px;}.css-1x4ysa3::-webkit-scrollbar-thumb,[data-css-1x4ysa3]::-webkit-scrollbar-thumb{background:#c2c2c2;border-radius:2.5px;}.css-1x4ysa3 > div,[data-css-1x4ysa3] > div{flex-basis:unset;-webkit-flex-basis:unset;}@media only screen and (max-width: 480px){.css-1x4ysa3 > div,[data-css-1x4ysa3] > div{flex-basis:unset;-webkit-flex-basis:unset;}}.css-1bn5mmw,[data-css-1bn5mmw]{text-decoration:none;min-width:300px;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:initial;flex-direction:column;-webkit-box-pack:initial;-webkit-justify-content:initial;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;}.css-1v4bhi8,[data-css-1v4bhi8]{width:150px;margin-right:100px;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:space-between;flex-direction:row;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-webkit-box-align:center;-webkit-align-items:center;}.css-6wyd29,[data-css-6wyd29]{width:50px;height:50px;border-radius:2px;border:1px solid #e1e1e1;}.css-19dpmz,[data-css-19dpmz]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:11px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#4a4a4a;height:21px;width:21px;box-sizing:content-box;flex-shrink:0;margin-right:5px;margin-left:5px;border-radius:50%;border:1px solid #e1e1e1;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:center;flex-direction:row;align-items:center;-webkit-flex-shrink:0;-webkit-box-pack:center;-webkit-justify-content:center;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-webkit-box-align:center;-webkit-align-items:center;}.css-v6oua5,[data-css-v6oua5]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;margin-top:15px;}.css-v6oua5 div,[data-css-v6oua5] div{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:14px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#707070;}.css-16r6zz5,[data-css-16r6zz5]{height:25px;width:25px;margin-right:5px;}.css-16r6zz5 svg > g,[data-css-16r6zz5] svg > g{fill:#068dfe;stroke:#068dfe;}.css-f2odf3,[data-css-f2odf3]{width:100%;padding:20px 20px 0;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:initial;flex-direction:column;align-items:center;-webkit-box-pack:initial;-webkit-justify-content:initial;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;}.css-f2odf3 > div:last-child,[data-css-f2odf3] > div:last-child{border-bottom:none;}@media only screen and (max-width: 1199px){.css-f2odf3,[data-css-f2odf3]{width:95%;}}@media only screen and (max-width: 768px){.css-f2odf3,[data-css-f2odf3]{width:93%;}}@media only screen and (max-width: 480px){.css-f2odf3,[data-css-f2odf3]{width:97%;}}.css-1m02by6,[data-css-1m02by6]{width:100%;height:42px;border-radius:4px;padding-left:10px;background:#fafafa;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:flex-start;flex-direction:row;align-items:center;-webkit-box-pack:start;-webkit-justify-content:flex-start;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-webkit-box-align:center;-webkit-align-items:center;}.css-1m02by6 h2,[data-css-1m02by6] h2{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:600;font-size:14px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#707070;margin:0;text-transform:uppercase;}</style> <div id="ToolAlternatives-react-component-8c2fa442-f07b-48d8-a46e-c304f79306a5" data-ssr="true" ><div class="css-1wr1kub"><div class="css-1nxoxgf"><div class="css-mtutfo"><div class="css-f3khu"><div data-testid="breadcrumbs" class="css-1ag7ge9"><a href="/" class="css-ld8qhm">Home</a><div class="css-11b98zt"></div><a href="/application_and_data" class="css-ld8qhm">Application and Data</a><div class="css-11b98zt"></div><a href="/data-stores" class="css-ld8qhm">Data Stores</a><div class="css-11b98zt"></div><a href="/message-queue" class="css-ld8qhm">Message Queue</a></div></div><div class="css-12i35kv"><div class="css-1mjw833"><div class="css-a5x1lt"><a href="http://kafka.apache.org/" target="_blank" rel="noopener noreferrer" title="Alternatives to Kafka website"><img src="https://img.stackshare.io/service/1063/kazUJooF_400x400.jpg" alt="Alternatives to Kafka logo" class="css-1m5j888"/></a><div class="css-4bpmfq"><div class="css-1pvkxrw"><h1 class="css-1cylxxa">Alternatives to Kafka</h1><div class="fork"><a href="https://github.com/apache/kafka" target="_blank" rel="noopener noreferrer nofollow" title="Open Source Repo of Kafka"><svg class="css-6pc9xu" xmlns="http://www.w3.org/2000/svg" width="16" height="22" viewBox="0 0 16 22"><path fill-opacity=".35" d="M12.8 0c-1.776 0-3.2 1.399-3.2 3.143 0 1.147.656 2.168 1.6 2.703v2.011L8 11 4.8 7.857V5.846c.944-.535 1.6-1.54 1.6-2.703C6.4 1.399 4.976 0 3.2 0 1.424 0 0 1.399 0 3.143 0 4.29.656 5.31 1.6 5.846v2.797l4.8 4.714v2.797c-.944.535-1.6 1.54-1.6 2.703C4.8 20.601 6.224 22 8 22c1.776 0 3.2-1.399 3.2-3.143 0-1.147-.656-2.168-1.6-2.703v-2.797l4.8-4.714V5.846c.944-.535 1.6-1.54 1.6-2.703C16 1.399 14.576 0 12.8 0zM3.2 5.029c-1.056 0-1.92-.865-1.92-1.886 0-1.022.88-1.886 1.92-1.886s1.92.864 1.92 1.886c0 1.021-.88 1.886-1.92 1.886zM8 20.743c-1.056 0-1.92-.864-1.92-1.886 0-1.021.88-1.886 1.92-1.886s1.92.865 1.92 1.886c0 1.022-.88 1.886-1.92 1.886zm4.8-15.714c-1.056 0-1.92-.865-1.92-1.886 0-1.022.88-1.886 1.92-1.886s1.92.864 1.92 1.886c0 1.021-.88 1.886-1.92 1.886z"></path></svg></a></div></div><div class="css-1g92dqh"><span class="css-1x2bey4"> ActiveMQ, RabbitMQ, Amazon Kinesis, Apache Spark, and Akka are the most popular alternatives and competitors to Kafka. </span></div></div></div></div><div class="css-1cs0rzs"><div class="css-1j0qgmo"><div class="css-kxs423"><a href="/jobs/kafka"><svg class="css-1krun48" id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g><path class="st0" d="M.7 16.8h28.6v1.8H.7v-1.8zm27.7.9l-.9.9v-1.8l.9.9z"></path><path class="st0" d="M4.6 6.1h20.7c2.2 0 3.9 1.8 3.9 3.9v13.6c0 2.2-1.8 3.9-3.9 3.9H4.6c-2.2 0-3.9-1.8-3.9-3.9V10c0-2.2 1.8-3.9 3.9-3.9zm0 1.8c-1.2 0-2.1 1-2.1 2.1v13.6c0 1.2 1 2.1 2.1 2.1h20.7c1.2 0 2.1-1 2.1-2.1V10c0-1.2-1-2.1-2.1-2.1H4.6z"></path><path class="st0" d="M10.5 16.8v4.3c0 1.1.9 2 2 2h5c1.1 0 2-.9 2-2v-4.3h-1.8v4.3c0 .1-.1.2-.2.2h-5c-.1 0-.2-.1-.2-.2v-4.3h-1.8zM8.8 7V4.5c0-1.1.9-2 2-2h8.6c1.1 0 2 .9 2 2V7h-1.8V4.5c0-.1-.1-.2-.2-.2h-8.6c-.1 0-.2.1-.2.2V7H8.8z"></path></g></svg> <div class="css-eemya1">View Jobs</div></a><a href="/kafka"><svg xmlns="http://www.w3.org/2000/svg" width="15" height="16" viewBox="0 0 15 16"><path fill="#068DFE" fill-rule="evenodd" d="M13.564 13.523c.263-.26.407-.607.407-.976 0-.368-.144-.715-.407-.975L7.516 5.906a3.076 3.076 0 0 0-.144-.131l-.235-.197.11-.286a3.265 3.265 0 0 0-.752-3.471A3.307 3.307 0 0 0 4.162.86c-.013 0-.027 0-.04.002l1.82 1.806-.783 2.459-2.472.777L.862 4.093a3.25 3.25 0 0 0 .965 2.355c.53.528 1.22.84 1.94.927a4.44 4.44 0 0 1 1.993-.486c2.467 0 4.475 1.996 4.475 4.45 0 .222-.034.434-.066.647l1.432 1.53a1.398 1.398 0 0 0 1.963.007zM5.76 14.656a3.341 3.341 0 0 0 3.268-2.631c.047-.222.073-.451.073-.686 0-.19-.025-.375-.057-.557a3.32 3.32 0 0 0-2.478-2.65 3.299 3.299 0 0 0-.806-.11c-.4 0-.78.083-1.134.21-1.284.464-2.207 1.676-2.207 3.107 0 1.829 1.498 3.317 3.34 3.317zm8.396-3.711c.44.439.677 1.002.677 1.602a2.234 2.234 0 0 1-2.244 2.236 2.26 2.26 0 0 1-1.597-.657l-1.08-1.154A4.473 4.473 0 0 1 5.76 15.79c-2.467 0-4.475-1.997-4.475-4.451 0-1.32.59-2.493 1.512-3.31a4.154 4.154 0 0 1-1.578-.97 4.114 4.114 0 0 1-1.203-3.28.753.753 0 0 1 1.279-.468l1.63 1.618 1.548-.487.488-1.531-1.626-1.614a.751.751 0 0 1 .467-1.28 4.162 4.162 0 0 1 3.3 1.194 4.126 4.126 0 0 1 1.045 4.106l6.009 5.629zm-7.97-1.96l.218.235a.517.517 0 1 1-.991.205c0-.285.231-.516.517-.516.095 0 .18.032.255.076zm-.298 1.65c.216 0 .388.173.388.387v2.319a.385.385 0 0 1-.388.386.385.385 0 0 1-.388-.386v-2.32c0-.213.172-.386.388-.386zm6.083 1.109a.675.675 0 0 1 .95 0 .663.663 0 0 1 0 .942.675.675 0 0 1-.95 0 .663.663 0 0 1 0-.942z"></path></svg> <div class="css-eemya1">Tool Profile</div></a><a rel="nofollow" href="http://twitter.com/apachekafka"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="12" viewBox="0 0 14 12"><path fill="none" stroke="#49A8F9" d="M11.884 3.45c.486-.344.891-.79 1.236-1.275a5.58 5.58 0 0 1-1.439.385c.527-.304.892-.79 1.074-1.378a5.216 5.216 0 0 1-1.56.608A2.449 2.449 0 0 0 9.39 1a2.473 2.473 0 0 0-2.473 2.491c0 .183.02.385.06.567A7.08 7.08 0 0 1 1.83 1.446c-.203.384-.324.81-.324 1.255 0 .871.425 1.62 1.094 2.066a2.29 2.29 0 0 1-1.115-.304v.02a2.5 2.5 0 0 0 1.987 2.451 2.274 2.274 0 0 1-.649.081c-.162 0-.324-.02-.466-.04.304.992 1.236 1.66 2.31 1.681-.85.668-1.905 1.134-3.08 1.134-.203 0-.406-.02-.588-.04 1.094.709 2.412 1.093 3.81 1.093 4.58 0 7.074-3.787 7.074-7.068V3.45z"></path></svg> <div class="css-eemya1">apachekafka</div></a><a rel="nofollow" href="http://kafka.apache.org/"><svg xmlns="http://www.w3.org/2000/svg" width="11" height="11" viewBox="0 0 11 11"><g fill="#49A8F9" fill-rule="evenodd"><path d="M10.5 0h-4a.5.5 0 0 0 0 1h2.793L4.146 6.146a.5.5 0 1 0 .708.708L10 1.707V4.5a.5.5 0 0 0 1 0v-4a.5.5 0 0 0-.5-.5"></path><path d="M8.5 5a.5.5 0 0 0-.5.5V10H1V3h4.5a.5.5 0 0 0 0-1h-5a.5.5 0 0 0-.5.5v8a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-5a.5.5 0 0 0-.5-.5"></path></g></svg> <div class="css-eemya1">kafka.apache.org</div></a><div class="css-3dgua6"></div></div><div class="css-1guve57"></div></div></div></div><div class="css-z63j1n"><div class="css-jyk0kg"><div><div class="css-4hck59"><div class="css-1drwozb"><div class="css-gbti5j"><label>Stacks</label><span>19.9K</span></div><div class="css-1ahj942"></div><div class="css-1an0suy"><label>Followers</label><span>18.9K</span><div>+ 1</div></div><div class="css-1ahj942"></div><div class="css-gbti5j"><label>Votes</label><span>596</span></div></div></div><div class="css-1dgfc7p"><button data-testid="follow" class="css-14pk3xx"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> <!-- -->Follow</button><button data-testid="iUseThis" class="css-1o4togz"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> I use this</button></div></div></div></div></div></div><div class="css-19r489t"></div><main class="css-1puyxnn"><div class="css-z9c3fl"><div class="css-nil"><div class="css-nil"><h2 class="css-i52n91">What is Kafka and what are its top alternatives?</h2><div class="css-13sfqhu">Kafka is a distributed, partitioned, replicated commit log service. It provides the functionality of a messaging system, but with a unique design.</div><div class="css-13sfqhu">Kafka<!-- --> is a tool in the <strong>Message Queue</strong> category of a tech stack.</div><div class="css-13sfqhu">Kafka<!-- --> is an open source tool with <strong>23.7K</strong> <!-- -->GitHub stars and <strong>12.1K</strong> GitHub forks. Here’s a link to <!-- -->Kafka<!-- -->&#x27;s open source repository on<!-- --> <a href="https://github.com/apache/kafka" title="Kafka&#x27;s GitHub" class="css-bjhznw">GitHub</a></div><div class="css-13sfqhu"><a href="/ampstories/kafka" class="css-1xexurq">Explore <!-- -->Kafka&#x27;s<!-- --> Story</a></div></div><div class="css-12257h"><h2 class="css-41bx4t">Top Alternatives to <!-- -->Kafka</h2><div class="css-83t7xw"><ul class="css-m7giud"><li class="css-1to1q1s"><a href="/activemq"><img src="https://img.stackshare.io/service/1062/thumb_retina_08edb6f82e2c79424efc1e297ab096e50acd8e0b.jpg" alt="ActiveMQ" class="css-np1rfd"/></a><div class="css-zwwro1"><a href="/activemq" class="css-1ps7r35">ActiveMQ</a><p class="css-1w2c3xd">Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, <span>comes with easy to use Enterprise Integration Patterns and many advanced features while fully supporting JMS 1.1 and J2EE 1.4. Apache ActiveMQ is released under the Apache 2.0 License. </span>...</p></div></li><li class="css-1to1q1s"><a href="/rabbitmq"><img src="https://img.stackshare.io/service/1061/thumb_retina_df93e9a30d27519161b39d8c1d5c223c1642d187.jpg" alt="RabbitMQ" class="css-np1rfd"/></a><div class="css-zwwro1"><a href="/rabbitmq" class="css-1ps7r35">RabbitMQ</a><p class="css-1w2c3xd">RabbitMQ gives your applications a common platform to send and receive messages, <span>and your messages a safe place to live until received. </span>...</p></div></li><li class="css-1to1q1s"><a href="/amazon-kinesis"><img src="https://img.stackshare.io/service/433/thumb_retina_6bea44ee4da746fbb7c9070a7ffac9b764d1ed79.png" alt="Amazon Kinesis" class="css-np1rfd"/></a><div class="css-zwwro1"><a href="/amazon-kinesis" class="css-1ps7r35">Amazon Kinesis</a><p class="css-1w2c3xd">Amazon Kinesis can collect and process hundreds of gigabytes of data per second <span>from hundreds of thousands of sources, allowing you to easily write applications that process information in real-time, from sources such as web site click-streams, marketing and financial information, manufacturing instrumentation and social media, and operational logs and metering data. </span>...</p></div></li><li class="css-1to1q1s"><a href="/spark"><img src="https://img.stackshare.io/service/2220/thumb_retina_ca72c4715da998b0bf5d1c857958bed3.png" alt="Apache Spark" class="css-np1rfd"/></a><div class="css-zwwro1"><a href="/spark" class="css-1ps7r35">Apache Spark</a><p class="css-1w2c3xd">Spark is a fast and general processing engine compatible with Hadoop data. It <span>can run in Hadoop clusters through YARN or Spark&#x27;s standalone mode, and it can process data in HDFS, HBase, Cassandra, Hive, and any Hadoop InputFormat. It is designed to perform both batch processing (similar to MapReduce) and new workloads like streaming, interactive queries, and machine learning. </span>...</p></div></li><li class="css-1to1q1s"><a href="/akka"><img src="https://img.stackshare.io/service/1773/thumb_retina_bxLhidly.png" alt="Akka" class="css-np1rfd"/></a><div class="css-zwwro1"><a href="/akka" class="css-1ps7r35">Akka</a><p class="css-1w2c3xd">Akka is a toolkit and runtime for building highly concurrent, distributed, and <span>resilient message-driven applications on the JVM. </span>...</p></div></li><li class="css-1to1q1s"><a href="/apache-storm"><img src="https://img.stackshare.io/service/1595/thumb_retina_WC8j4Gr3.png" alt="Apache Storm" class="css-np1rfd"/></a><div class="css-zwwro1"><a href="/apache-storm" class="css-1ps7r35">Apache Storm</a><p class="css-1w2c3xd">Apache Storm is a free and open source distributed realtime computation system. <span>Storm makes it easy to reliably process unbounded streams of data, doing for realtime processing what Hadoop did for batch processing. Storm has many use cases: realtime analytics, online machine learning, continuous computation, distributed RPC, ETL, and more. Storm is fast: a benchmark clocked it at over a million tuples processed per second per node. It is scalable, fault-tolerant, guarantees your data will be processed, and is easy to set up and operate. </span>...</p></div></li><li class="css-1to1q1s"><a href="/flink"><img src="https://img.stackshare.io/service/2968/thumb_retina_kQB_QIB_.png" alt="Apache Flink" class="css-np1rfd"/></a><div class="css-zwwro1"><a href="/flink" class="css-1ps7r35">Apache Flink</a><p class="css-1w2c3xd">Apache Flink is an open source system for fast and versatile data analytics <span>in clusters. Flink supports batch and streaming analytics, in one system. Analytical programs can be written in concise and elegant APIs in Java and Scala. </span>...</p></div></li><li class="css-1to1q1s"><a href="/redis"><img src="https://img.stackshare.io/service/1031/thumb_retina_cbce472cd134adc6688572f999e9122b9657d4ba.png" alt="Redis" class="css-np1rfd"/></a><div class="css-zwwro1"><a href="/redis" class="css-1ps7r35">Redis</a><p class="css-1w2c3xd">Redis is an open source (BSD licensed), in-memory data structure store, used <span>as a database, cache, and message broker. Redis provides data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes, and streams. </span>...</p></div></li></ul><div class="css-n746ki"></div></div><div class="css-13u3lpy"><button class="css-1iqua1m">Sign up to see more</button></div></div></div><aside class="css-em9idi"><div class="css-12llqor"><div class="css-81jah4"></div></div></aside></div><div class="css-guqgrw"><div class="css-13hey0t"><h3 class="css-ua0sjh">Kafka alternatives &amp; related posts</h3><div class="css-8qpfeu"><div class="css-kb8or3"><div class="css-1d3wilq"><div class="css-ljm4wn"><div class="css-mwikcm"><a href="/activemq" class="css-1jltg37"><img src="https://img.stackshare.io/service/1062/thumb_retina_08edb6f82e2c79424efc1e297ab096e50acd8e0b.jpg" alt="ActiveMQ logo" class="css-1489hth"/></a></div><div class="css-8wh4b7"><h2 class="css-pltn6z"><a href="/activemq" class="css-1hhgtx3">ActiveMQ</a></h2><div class="css-rpzmwi"><div class="css-12alag6"><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path fill-rule="evenodd" d="M20.467 21.867a2.415 2.415 0 0 1-2.318-1.74h-2.192l-.012.008-2.615-4.499h-1.598a2.415 2.415 0 1 1 0-1.35h1.641l-.058-.034 2.63-4.526.022.013h2.172a2.415 2.415 0 1 1 0 1.35h-1.424l-2.23 3.838-.002.003.001.004 2.234 3.843h1.431a2.415 2.415 0 1 1 2.318 3.09zm-.01-10.184a1.27 1.27 0 1 0-1.244-1.515v.492a1.27 1.27 0 0 0 1.244 1.023zm-11.043 2.01a1.268 1.268 0 1 0 0 2.537 1.268 1.268 0 0 0 0-2.537zm11.053 4.491a1.27 1.27 0 0 0-1.244 1.022v.493a1.27 1.27 0 0 0 1.244 1.022 1.27 1.27 0 0 0 0-2.537z"></path></g></svg></div><div class="css-1qckosq">679</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg class="css-1a4uubp" xmlns="http://www.w3.org/2000/svg" width="20" height="17" viewBox="0 0 20 17"><path fill="#A09F9F" fill-rule="evenodd" stroke="#999" stroke-width=".2" d="M14.432 12.715l2.348-2.746a.415.415 0 0 1 .607-.038.47.47 0 0 1 .028.646l-2.64 3.09a.419.419 0 0 1-.3.15h-.014a.414.414 0 0 1-.3-.127l-1.498-1.516a.466.466 0 0 1-.014-.637.413.413 0 0 1 .606-.015l1.177 1.193zm-3.165-.868a3.749 3.749 0 0 0 3.744 3.745 3.749 3.749 0 0 0 3.744-3.745 3.749 3.749 0 0 0-3.744-3.745 3.749 3.749 0 0 0-3.744 3.745zm2.001-4.195a4.523 4.523 0 0 1 1.743-.35 4.55 4.55 0 0 1 4.545 4.545 4.55 4.55 0 0 1-4.545 4.545 4.55 4.55 0 0 1-4.545-4.545 4.53 4.53 0 0 1 1.91-3.688c-.026-.013-.045-.029-.045-.054V5.837c0-.159.08-.308.207-.395a.588.588 0 0 0 .254-.487V2.6c0-.907-.721-1.64-1.602-1.64h-.494c-.886 0-1.603.738-1.603 1.64v2.355c0 .192.095.376.255.487a.47.47 0 0 1 .207.395v2.268a.588.588 0 0 1-.32.526c-.288.145-1.791.921-3.181 2.089a.66.66 0 0 0-.235.511v1.612a.456.456 0 0 1-.458.473.47.47 0 0 1-.466-.478v-1.612c0-.487.207-.94.575-1.249.153-.129.307-.253.461-.373V7.21a.5.5 0 0 1 .214-.41.352.352 0 0 0 .156-.296V4.618c0-.666-.525-1.206-1.172-1.206h-.394c-.646 0-1.166.54-1.166 1.201v1.886c0 .121.058.231.155.296.136.09.214.245.214.41v1.817c0 .225-.121.42-.316.52a13.83 13.83 0 0 0-2.513 1.662.421.421 0 0 0-.146.325v1.291a.487.487 0 0 1-.481.496A.487.487 0 0 1 0 12.82v-1.291c0-.425.18-.821.501-1.091.967-.821 2.003-1.411 2.479-1.667V7.435a1.368 1.368 0 0 1-.369-.936V4.613c0-1.211.958-2.192 2.129-2.192h.394c1.177 0 2.129.986 2.129 2.192v1.886c0 .356-.136.686-.369.936V8.91a19.344 19.344 0 0 1 1.733-1.037V6.059a1.557 1.557 0 0 1-.462-1.109V2.595C8.165 1.162 9.305 0 10.7 0h.495c1.399 0 2.535 1.167 2.535 2.595V4.95c0 .424-.17.82-.462 1.109v1.593z"></path></svg></div><div class="css-1qckosq">1.2K</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2" d="M23.42 15.403c.855-.864.59-2.612-.892-2.612l-3.903.002c.148-.837.363-2.226.354-2.357-.082-1.242-.863-2.754-.896-2.815-.143-.27-.862-.634-1.586-.478-.935.203-1.03.808-1.027.975 0 0 .04 1.655.044 2.097-.447.996-1.99 3.613-2.457 3.815a.706.706 0 0 0-.37-.105H7.755A.76.76 0 0 0 7 14.69v6.908a.72.72 0 0 0 .71.665h4.43a.718.718 0 0 0 .711-.722v-.23s.165-.012.24.037c.285.183.636.414 1.095.414h6.61c2.47 0 2.205-2.224 1.98-2.527.417-.46.675-1.273.323-1.915.27-.29.746-1.09.32-1.917zM11.986 21.54H7.71v-6.894h4.278v6.894zm10.28-6.196l-.041.17c1.138.329.532 1.659-.284 1.745l-.04.17c1.091.282.57 1.652-.285 1.745l-.04.17c.891.149.675 1.691-.675 1.691l-6.722.003c-.475 0-.907-.549-1.257-.549h-.304v-5.306c.38-.239.846-.549 1.106-.772.49-.424 2.497-3.71 2.497-4.122 0-.412-.045-2.191-.045-2.191s.394-.514 1.272-.14c0 0 .74 1.406.815 2.526 0 0-.333 2.307-.512 3.03h4.66c1.146.002.927 1.659-.146 1.83z"></path></svg></div><div class="css-1qckosq">77</div></div></div></div><div class="css-q4ncy">A message broker written in Java together with a full JMS client</div><div class="css-1mj0hbk"><div class="css-1drwozb"><div class="css-gbti5j"><label>Stacks</label><span>679</span></div><div class="css-1ahj942"></div><div class="css-1an0suy"><label>Followers</label><span>1.2K</span><div>+ 1</div></div><div class="css-1ahj942"></div><div class="css-gbti5j"><label>Votes</label><span>77</span></div></div></div></div></div><div class="css-1dnnpo5"><div class="css-ubpjqb"><button data-testid="follow" class="css-14pk3xx"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> <!-- -->Follow</button><button data-testid="iUseThis" class="css-1o4togz"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> I use this</button></div></div></div><div class="css-1erkkk4"><div class="css-a55l86"><div class="css-usifiy">PROS OF <!-- -->ACTIVEMQ</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">18</span></div></div><span class="css-rsz8c">Easy to use</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">14</span></div></div><span class="css-rsz8c">Open source</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">13</span></div></div><span class="css-rsz8c">Efficient</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">10</span></div></div><span class="css-rsz8c">JMS compliant</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">6</span></div></div><span class="css-rsz8c">High Availability</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">5</span></div></div><span class="css-rsz8c">Scalable</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Persistence</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Support XA (distributed transactions)</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Distributed Network of brokers</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Highly configurable</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Docker delievery</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">0</span></div></div><span class="css-rsz8c">RabbitMQ</span></div></li></ul></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">CONS OF <!-- -->ACTIVEMQ</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">ONLY Vertically Scalable</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Support</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Low resilience to exceptions and interruptions</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Difficult to scale</span></div></li></ul></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">COMPARE</div><div class="css-6t66tf"><div class="css-1bn5mmw"><a href="/stackups/activemq-vs-kafka" class="css-1dnwvu3"><div class="css-1v4bhi8"><img src="https://img.stackshare.io/service/1062/thumb_retina_08edb6f82e2c79424efc1e297ab096e50acd8e0b.jpg" alt="ActiveMQ logo" class="css-6wyd29"/><div class="css-19dpmz">VS</div><img src="https://img.stackshare.io/service/1063/thumb_retina_kazUJooF_400x400.jpg" alt="Kafka logo" class="css-6wyd29"/></div><div class="css-v6oua5"><div class="css-16r6zz5"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path d="M13.626 18.015l.511-.81a.405.405 0 0 0-.136-.565.422.422 0 0 0-.576.133l-.51.81c-.927 1.469-2.25 2.312-3.632 2.312H7.416a.412.412 0 1 0 0 .823h1.87c1.68-.007 3.26-.99 4.34-2.703zm9.944-7.882l-2.023-1.99a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.291h-1.939c-1.676 0-3.26.984-4.34 2.697l-.314.498a.405.405 0 0 0 .137.566.42.42 0 0 0 .572-.134l.313-.499c.927-1.468 2.249-2.308 3.632-2.308h1.936l-1.315 1.291a.403.403 0 0 0 0 .579c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.406.406 0 0 0-.003-.58zm-.862.34v-.04l.02.02-.02.02z"></path><path d="M20.954 22.581c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.403.403 0 0 0 0-.58l-2.027-1.986a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.292h-1.877c-1.38 0-2.706-.843-3.632-2.312L13.69 12.71c-1.08-1.716-2.664-2.697-4.34-2.697H7.416a.412.412 0 1 0 0 .823h1.931c1.38 0 2.705.843 3.632 2.309l3.073 4.874c1.08 1.716 2.664 2.7 4.34 2.7h1.877l-1.315 1.291a.4.4 0 0 0 0 .572zm1.754-2.265l.02.02-.02.02v-.04z"></path></g></svg></div><div>Compare ActiveMQ vs Kafka</div></div></a></div></div></div></div></div><div class="css-f2odf3"><div class="css-1m02by6"><h2>related ActiveMQ posts</h2></div><div class="css-uw1ldh"><div class="css-4gnhqq"><div class="css-xkasvz"><div class="css-atv6j6"><div class="css-1m8tyev"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div></div></div><div class="css-1vf0ygt"><div class="css-utnqcw"><div>sathishbabu96</div></div><div class="css-ds0hbm"><a href="/sathishbabu96/decisions/102696946328217936" class="css-nil"><time>Feb 11, 2019</time> <!-- -->| 4 upvotes · 296.5K views</a></div></div></div></div><div class="css-nil"><div class="css-dg4ww9"><svg xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21"><g fill="none" fill-rule="evenodd"><path fill="#068DFE" fill-rule="nonzero" d="M20.918 19.017l-1.442-4.195a10.3 10.3 0 0 0 1.062-4.537 10.208 10.208 0 0 0-2.949-7.207A10.199 10.199 0 0 0 10.436 0a10.23 10.23 0 0 0-7.428 3.006A10.228 10.228 0 0 0 0 10.437a10.199 10.199 0 0 0 3.077 7.153 10.207 10.207 0 0 0 7.191 2.95h.016a10.3 10.3 0 0 0 4.537-1.063l4.195 1.442a1.485 1.485 0 0 0 1.543-.357c.408-.408.545-.999.358-1.544z"></path><rect width="7" height="1.8" x="6" y="5" fill="#FFF" rx=".9"></rect><rect width="10" height="1.8" x="6" y="9" fill="#FFF" rx=".9"></rect><rect width="7" height="1.8" x="6" y="13" fill="#FFF" rx=".9"></rect></g></svg><div class="css-z9ms26">Shared insights</div><div class="css-6uh2e7">on</div><a href="/rocketmq" class="css-1pwtf47"><span title="Apache RocketMQ" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/5066/o-y51F77_400x400.jpg" alt="Apache RocketMQ" class="css-1rz3855"/></span><span class="css-i6njnm">Apache RocketMQ</span></a><a href="/kafka" class="css-1pwtf47"><span title="Kafka" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1063/kazUJooF_400x400.jpg" alt="Kafka" class="css-1rz3855"/></span><span class="css-i6njnm">Kafka</span></a><a href="/activemq" class="css-1pwtf47"><span title="ActiveMQ" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1062/default_08edb6f82e2c79424efc1e297ab096e50acd8e0b.jpg" alt="ActiveMQ" class="css-1rz3855"/></span><span class="css-i6njnm">ActiveMQ</span></a><a href="/rabbitmq" class="css-1pwtf47"><span title="RabbitMQ" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1061/default_df93e9a30d27519161b39d8c1d5c223c1642d187.jpg" alt="RabbitMQ" class="css-1rz3855"/></span><span class="css-i6njnm">RabbitMQ</span></a></div><div class="css-1dp4k20"><div class="css-ztg526"><p>I want to choose Message Queue with the following features - Highly Available, Distributed, Scalable, Monitoring. I have <span class="tool">RabbitMQ</span>, <span class="tool">ActiveMQ</span>, <span class="tool">Kafka</span> and <span class="tool">Apache RocketMQ</span> in mind. But I am confused which one to choose.</p></div></div></div><a class="css-1srb7t4">See more</a></div><div class="css-uw1ldh"><div class="css-4gnhqq"><div class="css-xkasvz"><div class="css-atv6j6"><div class="css-1m8tyev"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div></div></div><div class="css-1vf0ygt"><div class="css-utnqcw"><div>Naushad Warsi</div></div><div class="css-ds0hbm">software developer<!-- --> at klingelnberg<!-- --> · <a href="/NakWarsii/decisions/101583994929104325" class="css-nil"><time>Feb 13, 2019</time> <!-- -->| 1 upvote · 694.6K views</a></div></div></div></div><div class="css-nil"><div class="css-dg4ww9"><svg xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21"><g fill="none" fill-rule="evenodd"><path fill="#068DFE" fill-rule="nonzero" d="M20.918 19.017l-1.442-4.195a10.3 10.3 0 0 0 1.062-4.537 10.208 10.208 0 0 0-2.949-7.207A10.199 10.199 0 0 0 10.436 0a10.23 10.23 0 0 0-7.428 3.006A10.228 10.228 0 0 0 0 10.437a10.199 10.199 0 0 0 3.077 7.153 10.207 10.207 0 0 0 7.191 2.95h.016a10.3 10.3 0 0 0 4.537-1.063l4.195 1.442a1.485 1.485 0 0 0 1.543-.357c.408-.408.545-.999.358-1.544z"></path><rect width="7" height="1.8" x="6" y="5" fill="#FFF" rx=".9"></rect><rect width="10" height="1.8" x="6" y="9" fill="#FFF" rx=".9"></rect><rect width="7" height="1.8" x="6" y="13" fill="#FFF" rx=".9"></rect></g></svg><div class="css-z9ms26">Shared insights</div><div class="css-6uh2e7">on</div><a href="/activemq" class="css-1pwtf47"><span title="ActiveMQ" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1062/default_08edb6f82e2c79424efc1e297ab096e50acd8e0b.jpg" alt="ActiveMQ" class="css-1rz3855"/></span><span class="css-i6njnm">ActiveMQ</span></a><a href="/rabbitmq" class="css-1pwtf47"><span title="RabbitMQ" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1061/default_df93e9a30d27519161b39d8c1d5c223c1642d187.jpg" alt="RabbitMQ" class="css-1rz3855"/></span><span class="css-i6njnm">RabbitMQ</span></a></div><div class="css-1dp4k20"><div class="css-ztg526"><p>I use <span class="tool">ActiveMQ</span> because <span class="tool">RabbitMQ</span> have stopped giving the support for AMQP 1.0 or above version and the earlier version of AMQP doesn't give the functionality to support OAuth.</p> <p>If OAuth is not required and we can go with AMQP 0.9 then i still recommend rabbitMq. </p></div></div></div><a class="css-1srb7t4">See more</a></div></div></div><div class="css-8qpfeu"><div class="css-kb8or3"><div class="css-1d3wilq"><div class="css-ljm4wn"><div class="css-mwikcm"><a href="/rabbitmq" class="css-1jltg37"><img src="https://img.stackshare.io/service/1061/thumb_retina_df93e9a30d27519161b39d8c1d5c223c1642d187.jpg" alt="RabbitMQ logo" class="css-1489hth"/></a></div><div class="css-8wh4b7"><h2 class="css-pltn6z"><a href="/rabbitmq" class="css-1hhgtx3">RabbitMQ</a></h2><div class="css-rpzmwi"><div class="css-12alag6"><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path fill-rule="evenodd" d="M20.467 21.867a2.415 2.415 0 0 1-2.318-1.74h-2.192l-.012.008-2.615-4.499h-1.598a2.415 2.415 0 1 1 0-1.35h1.641l-.058-.034 2.63-4.526.022.013h2.172a2.415 2.415 0 1 1 0 1.35h-1.424l-2.23 3.838-.002.003.001.004 2.234 3.843h1.431a2.415 2.415 0 1 1 2.318 3.09zm-.01-10.184a1.27 1.27 0 1 0-1.244-1.515v.492a1.27 1.27 0 0 0 1.244 1.023zm-11.043 2.01a1.268 1.268 0 1 0 0 2.537 1.268 1.268 0 0 0 0-2.537zm11.053 4.491a1.27 1.27 0 0 0-1.244 1.022v.493a1.27 1.27 0 0 0 1.244 1.022 1.27 1.27 0 0 0 0-2.537z"></path></g></svg></div><div class="css-1qckosq">18.4K</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg class="css-1a4uubp" xmlns="http://www.w3.org/2000/svg" width="20" height="17" viewBox="0 0 20 17"><path fill="#A09F9F" fill-rule="evenodd" stroke="#999" stroke-width=".2" d="M14.432 12.715l2.348-2.746a.415.415 0 0 1 .607-.038.47.47 0 0 1 .028.646l-2.64 3.09a.419.419 0 0 1-.3.15h-.014a.414.414 0 0 1-.3-.127l-1.498-1.516a.466.466 0 0 1-.014-.637.413.413 0 0 1 .606-.015l1.177 1.193zm-3.165-.868a3.749 3.749 0 0 0 3.744 3.745 3.749 3.749 0 0 0 3.744-3.745 3.749 3.749 0 0 0-3.744-3.745 3.749 3.749 0 0 0-3.744 3.745zm2.001-4.195a4.523 4.523 0 0 1 1.743-.35 4.55 4.55 0 0 1 4.545 4.545 4.55 4.55 0 0 1-4.545 4.545 4.55 4.55 0 0 1-4.545-4.545 4.53 4.53 0 0 1 1.91-3.688c-.026-.013-.045-.029-.045-.054V5.837c0-.159.08-.308.207-.395a.588.588 0 0 0 .254-.487V2.6c0-.907-.721-1.64-1.602-1.64h-.494c-.886 0-1.603.738-1.603 1.64v2.355c0 .192.095.376.255.487a.47.47 0 0 1 .207.395v2.268a.588.588 0 0 1-.32.526c-.288.145-1.791.921-3.181 2.089a.66.66 0 0 0-.235.511v1.612a.456.456 0 0 1-.458.473.47.47 0 0 1-.466-.478v-1.612c0-.487.207-.94.575-1.249.153-.129.307-.253.461-.373V7.21a.5.5 0 0 1 .214-.41.352.352 0 0 0 .156-.296V4.618c0-.666-.525-1.206-1.172-1.206h-.394c-.646 0-1.166.54-1.166 1.201v1.886c0 .121.058.231.155.296.136.09.214.245.214.41v1.817c0 .225-.121.42-.316.52a13.83 13.83 0 0 0-2.513 1.662.421.421 0 0 0-.146.325v1.291a.487.487 0 0 1-.481.496A.487.487 0 0 1 0 12.82v-1.291c0-.425.18-.821.501-1.091.967-.821 2.003-1.411 2.479-1.667V7.435a1.368 1.368 0 0 1-.369-.936V4.613c0-1.211.958-2.192 2.129-2.192h.394c1.177 0 2.129.986 2.129 2.192v1.886c0 .356-.136.686-.369.936V8.91a19.344 19.344 0 0 1 1.733-1.037V6.059a1.557 1.557 0 0 1-.462-1.109V2.595C8.165 1.162 9.305 0 10.7 0h.495c1.399 0 2.535 1.167 2.535 2.595V4.95c0 .424-.17.82-.462 1.109v1.593z"></path></svg></div><div class="css-1qckosq">16.1K</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2" d="M23.42 15.403c.855-.864.59-2.612-.892-2.612l-3.903.002c.148-.837.363-2.226.354-2.357-.082-1.242-.863-2.754-.896-2.815-.143-.27-.862-.634-1.586-.478-.935.203-1.03.808-1.027.975 0 0 .04 1.655.044 2.097-.447.996-1.99 3.613-2.457 3.815a.706.706 0 0 0-.37-.105H7.755A.76.76 0 0 0 7 14.69v6.908a.72.72 0 0 0 .71.665h4.43a.718.718 0 0 0 .711-.722v-.23s.165-.012.24.037c.285.183.636.414 1.095.414h6.61c2.47 0 2.205-2.224 1.98-2.527.417-.46.675-1.273.323-1.915.27-.29.746-1.09.32-1.917zM11.986 21.54H7.71v-6.894h4.278v6.894zm10.28-6.196l-.041.17c1.138.329.532 1.659-.284 1.745l-.04.17c1.091.282.57 1.652-.285 1.745l-.04.17c.891.149.675 1.691-.675 1.691l-6.722.003c-.475 0-.907-.549-1.257-.549h-.304v-5.306c.38-.239.846-.549 1.106-.772.49-.424 2.497-3.71 2.497-4.122 0-.412-.045-2.191-.045-2.191s.394-.514 1.272-.14c0 0 .74 1.406.815 2.526 0 0-.333 2.307-.512 3.03h4.66c1.146.002.927 1.659-.146 1.83z"></path></svg></div><div class="css-1qckosq">522</div></div></div></div><div class="css-q4ncy">Open source multiprotocol messaging broker</div><div class="css-1mj0hbk"><div class="css-1drwozb"><div class="css-gbti5j"><label>Stacks</label><span>18.4K</span></div><div class="css-1ahj942"></div><div class="css-1an0suy"><label>Followers</label><span>16.1K</span><div>+ 1</div></div><div class="css-1ahj942"></div><div class="css-gbti5j"><label>Votes</label><span>522</span></div></div></div></div></div><div class="css-1dnnpo5"><div class="css-ubpjqb"><button data-testid="follow" class="css-14pk3xx"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> <!-- -->Follow</button><button data-testid="iUseThis" class="css-1o4togz"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> I use this</button></div><div class="css-gpa5xw"><div class="css-1ob9em9"><button class="css-1mpii3w">Monitor RabbitMQ Metrics In Real-Time With Datadog</button></div></div></div></div><div class="css-1erkkk4"><div class="css-a55l86"><div class="css-usifiy">PROS OF <!-- -->RABBITMQ</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">232</span></div></div><span class="css-rsz8c">It&#x27;s fast and it works with good metrics/monitoring</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">79</span></div></div><span class="css-rsz8c">Ease of configuration</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">58</span></div></div><span class="css-rsz8c">I like the admin interface</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">50</span></div></div><span class="css-rsz8c">Easy to set-up and start with</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">20</span></div></div><span class="css-rsz8c">Durable</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">18</span></div></div><span class="css-rsz8c">Standard protocols</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">18</span></div></div><span class="css-rsz8c">Intuitive work through python</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">10</span></div></div><span class="css-rsz8c">Written primarily in Erlang</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">8</span></div></div><span class="css-rsz8c">Simply superb</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">6</span></div></div><span class="css-rsz8c">Completeness of messaging patterns</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Reliable</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Scales to 1 million messages per second</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">Better than most traditional queue based message broker</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">Distributed</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">Supports AMQP</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Inubit Integration</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Open-source</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Delayed messages</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Supports MQTT</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Runs on Open Telecom Platform</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">High performance</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Reliability</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Clusterable</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Clear documentation with different scripting language</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Great ui</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Better routing system</span></div></li></ul></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">CONS OF <!-- -->RABBITMQ</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">9</span></div></div><span class="css-rsz8c">Too complicated cluster/HA config and management</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">6</span></div></div><span class="css-rsz8c">Needs Erlang runtime. Need ops good with Erlang runtime</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">5</span></div></div><span class="css-rsz8c">Configuration must be done first, not by your code</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">4</span></div></div><span class="css-rsz8c">Slow</span></div></li></ul></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">COMPARE</div><div class="css-6t66tf"><div class="css-1bn5mmw"><a href="/stackups/rabbitmq-vs-kafka" class="css-1dnwvu3"><div class="css-1v4bhi8"><img src="https://img.stackshare.io/service/1061/thumb_retina_df93e9a30d27519161b39d8c1d5c223c1642d187.jpg" alt="RabbitMQ logo" class="css-6wyd29"/><div class="css-19dpmz">VS</div><img src="https://img.stackshare.io/service/1063/thumb_retina_kazUJooF_400x400.jpg" alt="Kafka logo" class="css-6wyd29"/></div><div class="css-v6oua5"><div class="css-16r6zz5"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path d="M13.626 18.015l.511-.81a.405.405 0 0 0-.136-.565.422.422 0 0 0-.576.133l-.51.81c-.927 1.469-2.25 2.312-3.632 2.312H7.416a.412.412 0 1 0 0 .823h1.87c1.68-.007 3.26-.99 4.34-2.703zm9.944-7.882l-2.023-1.99a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.291h-1.939c-1.676 0-3.26.984-4.34 2.697l-.314.498a.405.405 0 0 0 .137.566.42.42 0 0 0 .572-.134l.313-.499c.927-1.468 2.249-2.308 3.632-2.308h1.936l-1.315 1.291a.403.403 0 0 0 0 .579c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.406.406 0 0 0-.003-.58zm-.862.34v-.04l.02.02-.02.02z"></path><path d="M20.954 22.581c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.403.403 0 0 0 0-.58l-2.027-1.986a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.292h-1.877c-1.38 0-2.706-.843-3.632-2.312L13.69 12.71c-1.08-1.716-2.664-2.697-4.34-2.697H7.416a.412.412 0 1 0 0 .823h1.931c1.38 0 2.705.843 3.632 2.309l3.073 4.874c1.08 1.716 2.664 2.7 4.34 2.7h1.877l-1.315 1.291a.4.4 0 0 0 0 .572zm1.754-2.265l.02.02-.02.02v-.04z"></path></g></svg></div><div>Compare RabbitMQ vs Kafka</div></div></a></div></div></div></div></div><div class="css-f2odf3"><div class="css-1m02by6"><h2>related RabbitMQ posts</h2></div><div class="css-uw1ldh"><div class="css-4gnhqq"><div class="css-xkasvz"><div class="css-atv6j6"><div class="css-1m8tyev"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div></div></div><div class="css-1vf0ygt"><div class="css-utnqcw"><div>James Cunningham</div></div><div class="css-ds0hbm">Operations Engineer<!-- --> at Sentry<!-- --> · <a href="/jtcunning/decisions/101031322402962743" class="css-nil"><time>Sep 13, 2018</time> <!-- -->| 18 upvotes · 1.5M views</a></div></div></div></div><div class="css-nil"><div class="css-dg4ww9"><svg xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21"><g fill="none" fill-rule="evenodd"><path fill="#068DFE" fill-rule="nonzero" d="M20.918 19.017l-1.442-4.195a10.3 10.3 0 0 0 1.062-4.537 10.208 10.208 0 0 0-2.949-7.207A10.199 10.199 0 0 0 10.436 0a10.23 10.23 0 0 0-7.428 3.006A10.228 10.228 0 0 0 0 10.437a10.199 10.199 0 0 0 3.077 7.153 10.207 10.207 0 0 0 7.191 2.95h.016a10.3 10.3 0 0 0 4.537-1.063l4.195 1.442a1.485 1.485 0 0 0 1.543-.357c.408-.408.545-.999.358-1.544z"></path><rect width="7" height="1.8" x="6" y="5" fill="#FFF" rx=".9"></rect><rect width="10" height="1.8" x="6" y="9" fill="#FFF" rx=".9"></rect><rect width="7" height="1.8" x="6" y="13" fill="#FFF" rx=".9"></rect></g></svg><div class="css-z9ms26">Shared insights</div><div class="css-6uh2e7">on</div><a href="/celery" class="css-1pwtf47"><span title="Celery" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1075/celery.png" alt="Celery" class="css-1rz3855"/></span><span class="css-i6njnm">Celery</span></a><a href="/rabbitmq" class="css-1pwtf47"><span title="RabbitMQ" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1061/default_df93e9a30d27519161b39d8c1d5c223c1642d187.jpg" alt="RabbitMQ" class="css-1rz3855"/></span><span class="css-i6njnm">RabbitMQ</span></a><div class="css-6uh2e7">at</div><a itemscope="" itemType="http://schema.org/Organization" itemProp="url" href="/companies/sentry" target="_blank" class="css-1j2w1cg"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div><div itemProp="name" class="css-1b2ktnx">Sentry</div></a></div><div class="css-1dp4k20"><div class="css-ztg526"><p>As Sentry runs throughout the day, there are about 50 different offline tasks that we execute—anything from “process this event, pretty please” to “send all of these cool people some emails.” There are some that we execute once a day and some that execute thousands per second.</p> <p>Managing this variety requires a reliably high-throughput message-passing technology. We use <span class="tool">Celery</span>'s <span class="tool">RabbitMQ</span> implementation, and we stumbled upon a great feature called Federation that allows us to partition our task queue across any number of RabbitMQ servers and gives us the confidence that, if any single server gets backlogged, others will pitch in and distribute some of the backlogged tasks to their consumers.</p> <p><span class="topic">#MessageQueue</span></p></div><div class="css-13nf4of"><svg class="css-xd3exe" xmlns="http://www.w3.org/2000/svg" width="11" height="11" viewBox="0 0 11 11"><g fill="#49A8F9" fill-rule="evenodd"><path d="M10.5 0h-4a.5.5 0 0 0 0 1h2.793L4.146 6.146a.5.5 0 1 0 .708.708L10 1.707V4.5a.5.5 0 0 0 1 0v-4a.5.5 0 0 0-.5-.5"></path><path d="M8.5 5a.5.5 0 0 0-.5.5V10H1V3h4.5a.5.5 0 0 0 0-1h-5a.5.5 0 0 0-.5.5v8a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-5a.5.5 0 0 0-.5-.5"></path></g></svg><a href="https://stackshare.io/sentry/how-sentry-receives-20-billion-events-per-month-while-preparing-to-handle-twice-that" title="How Sentry Receives 20 Billion Events Per Month While Preparing to Handle Twice That - Sentry Tech Stack | StackShare" class="css-nil">How Sentry Receives 20 Billion Events Per Month While Preparing to Handle Twice That - Sentry Tech Stack | StackShare</a></div></div></div><a class="css-1srb7t4">See more</a></div><div class="css-uw1ldh"><div class="css-4gnhqq"><div class="css-xkasvz"><div class="css-atv6j6"><div class="css-1m8tyev"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div></div></div><div class="css-1vf0ygt"><div class="css-utnqcw"><div>Yogesh Bhondekar</div></div><div class="css-ds0hbm">Product Manager | SaaS | Traveller<!-- --> · <a href="/ydbhondekar2407/decisions/104284687365973556" class="css-nil"><time>Jun 4, 2020</time> <!-- -->| 15 upvotes · 263.1K views</a></div></div></div></div><div class="css-nil"><div class="css-dg4ww9"><svg xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21"><g fill="none" fill-rule="evenodd"><path fill="#068DFE" fill-rule="nonzero" d="M20.918 19.017l-1.442-4.195a10.3 10.3 0 0 0 1.062-4.537 10.208 10.208 0 0 0-2.949-7.207A10.199 10.199 0 0 0 10.436 0a10.23 10.23 0 0 0-7.428 3.006A10.228 10.228 0 0 0 0 10.437a10.199 10.199 0 0 0 3.077 7.153 10.207 10.207 0 0 0 7.191 2.95h.016a10.3 10.3 0 0 0 4.537-1.063l4.195 1.442a1.485 1.485 0 0 0 1.543-.357c.408-.408.545-.999.358-1.544z"></path><rect width="7" height="1.8" x="6" y="5" fill="#FFF" rx=".9"></rect><rect width="10" height="1.8" x="6" y="9" fill="#FFF" rx=".9"></rect><rect width="7" height="1.8" x="6" y="13" fill="#FFF" rx=".9"></rect></g></svg><div class="css-z9ms26">Shared insights</div><div class="css-6uh2e7">on</div><a href="/rabbitmq" class="css-1pwtf47"><span title="RabbitMQ" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1061/default_df93e9a30d27519161b39d8c1d5c223c1642d187.jpg" alt="RabbitMQ" class="css-1rz3855"/></span><span class="css-i6njnm">RabbitMQ</span></a><a href="/redis" class="css-1pwtf47"><span title="Redis" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1031/default_cbce472cd134adc6688572f999e9122b9657d4ba.png" alt="Redis" class="css-1rz3855"/></span><span class="css-i6njnm">Redis</span></a><a href="/terraform" class="css-1pwtf47"><span title="Terraform" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1276/og-image-8b3e4f7d.png" alt="Terraform" class="css-1rz3855"/></span><span class="css-i6njnm">Terraform</span></a><a href="/gitlab" class="css-1pwtf47"><span title="GitLab" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/880/lmalkclL.png" alt="GitLab" class="css-1rz3855"/></span><span class="css-i6njnm">GitLab</span></a><a href="/kubernetes" class="css-1pwtf47"><span title="Kubernetes" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1885/21_d3cvM.png" alt="Kubernetes" class="css-1rz3855"/></span><span class="css-i6njnm">Kubernetes</span></a><a href="/docker" class="css-1pwtf47"><span title="Docker" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/586/n4u37v9t_400x400.png" alt="Docker" class="css-1rz3855"/></span><span class="css-i6njnm">Docker</span></a><a href="/mongodb" class="css-1pwtf47"><span title="MongoDB" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1030/leaf-360x360.png" alt="MongoDB" class="css-1rz3855"/></span><span class="css-i6njnm">MongoDB</span></a><a href="/nodejs" class="css-1pwtf47"><span title="Node.js" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1011/n1JRsFeB_400x400.png" alt="Node.js" class="css-1rz3855"/></span><span class="css-i6njnm">Node.js</span></a><a href="/react" class="css-1pwtf47"><span title="React" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1020/OYIaJ1KK.png" alt="React" class="css-1rz3855"/></span><span class="css-i6njnm">React</span></a><a href="/zoom" class="css-1pwtf47"><span title="Zoom" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/6083/oD_oPSBP_400x400.jpg" alt="Zoom" class="css-1rz3855"/></span><span class="css-i6njnm">Zoom</span></a></div><div class="css-1dp4k20"><div class="css-ztg526"><p>Hi, I am building an enhanced web-conferencing app that will have a voice/video call, live chats, live notifications, live discussions, screen sharing, etc features. Ref: <span class="tool">Zoom</span>.</p> <p>I need advise finalizing the tech stack for this app. I am considering below tech stack:</p> <ul> <li>Frontend: <span class="tool">React</span></li> <li>Backend: <span class="tool">Node.js</span></li> <li>Database: <span class="tool">MongoDB</span></li> <li>IAAS: <span class="topic">#AWS</span> </li> <li>Containers &amp; Orchestration: <span class="tool">Docker</span> / <span class="tool">Kubernetes</span></li> <li>DevOps: <span class="tool">GitLab</span>, <span class="tool">Terraform</span></li> <li>Brokers: <span class="tool">Redis</span> / <span class="tool">RabbitMQ</span></li> </ul> <p>I need advice at the platform level as to what could be considered to support concurrent video streaming seamlessly. </p> <p>Also, please suggest what could be a better tech stack for my app?</p> <p><span class="topic">#SAAS</span> <span class="topic">#VideoConferencing</span> <span class="topic">#WebAndVideoConferencing</span> <span class="topic">#zoom</span> <span class="topic">#stack</span> </p></div></div></div><a class="css-1srb7t4">See more</a></div></div></div><div class="css-8qpfeu"><div class="css-kb8or3"><div class="css-1d3wilq"><div class="css-ljm4wn"><div class="css-mwikcm"><a href="/amazon-kinesis" class="css-1jltg37"><img src="https://img.stackshare.io/service/433/thumb_retina_6bea44ee4da746fbb7c9070a7ffac9b764d1ed79.png" alt="Amazon Kinesis logo" class="css-1489hth"/></a></div><div class="css-8wh4b7"><h2 class="css-pltn6z"><a href="/amazon-kinesis" class="css-1hhgtx3">Amazon Kinesis</a></h2><div class="css-rpzmwi"><div class="css-12alag6"><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path fill-rule="evenodd" d="M20.467 21.867a2.415 2.415 0 0 1-2.318-1.74h-2.192l-.012.008-2.615-4.499h-1.598a2.415 2.415 0 1 1 0-1.35h1.641l-.058-.034 2.63-4.526.022.013h2.172a2.415 2.415 0 1 1 0 1.35h-1.424l-2.23 3.838-.002.003.001.004 2.234 3.843h1.431a2.415 2.415 0 1 1 2.318 3.09zm-.01-10.184a1.27 1.27 0 1 0-1.244-1.515v.492a1.27 1.27 0 0 0 1.244 1.023zm-11.043 2.01a1.268 1.268 0 1 0 0 2.537 1.268 1.268 0 0 0 0-2.537zm11.053 4.491a1.27 1.27 0 0 0-1.244 1.022v.493a1.27 1.27 0 0 0 1.244 1.022 1.27 1.27 0 0 0 0-2.537z"></path></g></svg></div><div class="css-1qckosq">742</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg class="css-1a4uubp" xmlns="http://www.w3.org/2000/svg" width="20" height="17" viewBox="0 0 20 17"><path fill="#A09F9F" fill-rule="evenodd" stroke="#999" stroke-width=".2" d="M14.432 12.715l2.348-2.746a.415.415 0 0 1 .607-.038.47.47 0 0 1 .028.646l-2.64 3.09a.419.419 0 0 1-.3.15h-.014a.414.414 0 0 1-.3-.127l-1.498-1.516a.466.466 0 0 1-.014-.637.413.413 0 0 1 .606-.015l1.177 1.193zm-3.165-.868a3.749 3.749 0 0 0 3.744 3.745 3.749 3.749 0 0 0 3.744-3.745 3.749 3.749 0 0 0-3.744-3.745 3.749 3.749 0 0 0-3.744 3.745zm2.001-4.195a4.523 4.523 0 0 1 1.743-.35 4.55 4.55 0 0 1 4.545 4.545 4.55 4.55 0 0 1-4.545 4.545 4.55 4.55 0 0 1-4.545-4.545 4.53 4.53 0 0 1 1.91-3.688c-.026-.013-.045-.029-.045-.054V5.837c0-.159.08-.308.207-.395a.588.588 0 0 0 .254-.487V2.6c0-.907-.721-1.64-1.602-1.64h-.494c-.886 0-1.603.738-1.603 1.64v2.355c0 .192.095.376.255.487a.47.47 0 0 1 .207.395v2.268a.588.588 0 0 1-.32.526c-.288.145-1.791.921-3.181 2.089a.66.66 0 0 0-.235.511v1.612a.456.456 0 0 1-.458.473.47.47 0 0 1-.466-.478v-1.612c0-.487.207-.94.575-1.249.153-.129.307-.253.461-.373V7.21a.5.5 0 0 1 .214-.41.352.352 0 0 0 .156-.296V4.618c0-.666-.525-1.206-1.172-1.206h-.394c-.646 0-1.166.54-1.166 1.201v1.886c0 .121.058.231.155.296.136.09.214.245.214.41v1.817c0 .225-.121.42-.316.52a13.83 13.83 0 0 0-2.513 1.662.421.421 0 0 0-.146.325v1.291a.487.487 0 0 1-.481.496A.487.487 0 0 1 0 12.82v-1.291c0-.425.18-.821.501-1.091.967-.821 2.003-1.411 2.479-1.667V7.435a1.368 1.368 0 0 1-.369-.936V4.613c0-1.211.958-2.192 2.129-2.192h.394c1.177 0 2.129.986 2.129 2.192v1.886c0 .356-.136.686-.369.936V8.91a19.344 19.344 0 0 1 1.733-1.037V6.059a1.557 1.557 0 0 1-.462-1.109V2.595C8.165 1.162 9.305 0 10.7 0h.495c1.399 0 2.535 1.167 2.535 2.595V4.95c0 .424-.17.82-.462 1.109v1.593z"></path></svg></div><div class="css-1qckosq">566</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2" d="M23.42 15.403c.855-.864.59-2.612-.892-2.612l-3.903.002c.148-.837.363-2.226.354-2.357-.082-1.242-.863-2.754-.896-2.815-.143-.27-.862-.634-1.586-.478-.935.203-1.03.808-1.027.975 0 0 .04 1.655.044 2.097-.447.996-1.99 3.613-2.457 3.815a.706.706 0 0 0-.37-.105H7.755A.76.76 0 0 0 7 14.69v6.908a.72.72 0 0 0 .71.665h4.43a.718.718 0 0 0 .711-.722v-.23s.165-.012.24.037c.285.183.636.414 1.095.414h6.61c2.47 0 2.205-2.224 1.98-2.527.417-.46.675-1.273.323-1.915.27-.29.746-1.09.32-1.917zM11.986 21.54H7.71v-6.894h4.278v6.894zm10.28-6.196l-.041.17c1.138.329.532 1.659-.284 1.745l-.04.17c1.091.282.57 1.652-.285 1.745l-.04.17c.891.149.675 1.691-.675 1.691l-6.722.003c-.475 0-.907-.549-1.257-.549h-.304v-5.306c.38-.239.846-.549 1.106-.772.49-.424 2.497-3.71 2.497-4.122 0-.412-.045-2.191-.045-2.191s.394-.514 1.272-.14c0 0 .74 1.406.815 2.526 0 0-.333 2.307-.512 3.03h4.66c1.146.002.927 1.659-.146 1.83z"></path></svg></div><div class="css-1qckosq">9</div></div></div></div><div class="css-q4ncy">Store and process terabytes of data each hour from hundreds of thousands of sources</div><div class="css-1mj0hbk"><div class="css-1drwozb"><div class="css-gbti5j"><label>Stacks</label><span>742</span></div><div class="css-1ahj942"></div><div class="css-1an0suy"><label>Followers</label><span>566</span><div>+ 1</div></div><div class="css-1ahj942"></div><div class="css-gbti5j"><label>Votes</label><span>9</span></div></div></div></div></div><div class="css-1dnnpo5"><div class="css-ubpjqb"><button data-testid="follow" class="css-14pk3xx"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> <!-- -->Follow</button><button data-testid="iUseThis" class="css-1o4togz"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> I use this</button></div><div class="css-gpa5xw"><div class="css-1ob9em9"><button class="css-1mpii3w">Kinesis destination for data export w/LaunchDarkly</button></div></div></div></div><div class="css-1erkkk4"><div class="css-a55l86"><div class="css-usifiy">PROS OF <!-- -->AMAZON KINESIS</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">9</span></div></div><span class="css-rsz8c">Scalable</span></div></li></ul></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">CONS OF <!-- -->AMAZON KINESIS</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Cost</span></div></li></ul></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">COMPARE</div><div class="css-6t66tf"><div class="css-1bn5mmw"><a href="/stackups/amazon-kinesis-vs-kafka" class="css-1dnwvu3"><div class="css-1v4bhi8"><img src="https://img.stackshare.io/service/433/thumb_retina_6bea44ee4da746fbb7c9070a7ffac9b764d1ed79.png" alt="Amazon Kinesis logo" class="css-6wyd29"/><div class="css-19dpmz">VS</div><img src="https://img.stackshare.io/service/1063/thumb_retina_kazUJooF_400x400.jpg" alt="Kafka logo" class="css-6wyd29"/></div><div class="css-v6oua5"><div class="css-16r6zz5"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path d="M13.626 18.015l.511-.81a.405.405 0 0 0-.136-.565.422.422 0 0 0-.576.133l-.51.81c-.927 1.469-2.25 2.312-3.632 2.312H7.416a.412.412 0 1 0 0 .823h1.87c1.68-.007 3.26-.99 4.34-2.703zm9.944-7.882l-2.023-1.99a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.291h-1.939c-1.676 0-3.26.984-4.34 2.697l-.314.498a.405.405 0 0 0 .137.566.42.42 0 0 0 .572-.134l.313-.499c.927-1.468 2.249-2.308 3.632-2.308h1.936l-1.315 1.291a.403.403 0 0 0 0 .579c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.406.406 0 0 0-.003-.58zm-.862.34v-.04l.02.02-.02.02z"></path><path d="M20.954 22.581c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.403.403 0 0 0 0-.58l-2.027-1.986a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.292h-1.877c-1.38 0-2.706-.843-3.632-2.312L13.69 12.71c-1.08-1.716-2.664-2.697-4.34-2.697H7.416a.412.412 0 1 0 0 .823h1.931c1.38 0 2.705.843 3.632 2.309l3.073 4.874c1.08 1.716 2.664 2.7 4.34 2.7h1.877l-1.315 1.291a.4.4 0 0 0 0 .572zm1.754-2.265l.02.02-.02.02v-.04z"></path></g></svg></div><div>Compare Amazon Kinesis vs Kafka</div></div></a></div></div></div></div></div><div class="css-f2odf3"><div class="css-1m02by6"><h2>related Amazon Kinesis posts</h2></div><div class="css-uw1ldh"><div class="css-4gnhqq"><div class="css-xkasvz"><div class="css-atv6j6"><div class="css-1m8tyev"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div></div></div><div class="css-1vf0ygt"><div class="css-utnqcw"><div>Praveen Mooli</div></div><div class="css-ds0hbm">Engineering Manager<!-- --> at Taylor and Francis<!-- --> · <a href="/praveenm/decisions/102523983538702954" class="css-nil"><time>Jul 29, 2019</time> <!-- -->| 18 upvotes · 2.6M views</a></div></div></div></div><div class="css-nil"><div class="css-dg4ww9"><svg xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21"><g fill="none" fill-rule="evenodd"><path fill="#068DFE" fill-rule="nonzero" d="M20.918 19.017l-1.442-4.195a10.3 10.3 0 0 0 1.062-4.537 10.208 10.208 0 0 0-2.949-7.207A10.199 10.199 0 0 0 10.436 0a10.23 10.23 0 0 0-7.428 3.006A10.228 10.228 0 0 0 0 10.437a10.199 10.199 0 0 0 3.077 7.153 10.207 10.207 0 0 0 7.191 2.95h.016a10.3 10.3 0 0 0 4.537-1.063l4.195 1.442a1.485 1.485 0 0 0 1.543-.357c.408-.408.545-.999.358-1.544z"></path><rect width="7" height="1.8" x="6" y="5" fill="#FFF" rx=".9"></rect><rect width="10" height="1.8" x="6" y="9" fill="#FFF" rx=".9"></rect><rect width="7" height="1.8" x="6" y="13" fill="#FFF" rx=".9"></rect></g></svg><div class="css-z9ms26">Shared insights</div><div class="css-6uh2e7">on</div><a href="/mongodb-atlas" class="css-1pwtf47"><span title="MongoDB Atlas" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/5739/atlas-360x360.png" alt="MongoDB Atlas" class="css-1rz3855"/></span><span class="css-i6njnm">MongoDB Atlas</span></a><a href="/java" class="css-1pwtf47"><span title="Java" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/995/K85ZWV2F.png" alt="Java" class="css-1rz3855"/></span><span class="css-i6njnm">Java</span></a><a href="/spring-boot" class="css-1pwtf47"><span title="Spring Boot" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/2927/nPzvMuo2_400x400.png" alt="Spring Boot" class="css-1rz3855"/></span><span class="css-i6njnm">Spring Boot</span></a><a href="/nodejs" class="css-1pwtf47"><span title="Node.js" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1011/n1JRsFeB_400x400.png" alt="Node.js" class="css-1rz3855"/></span><span class="css-i6njnm">Node.js</span></a><a href="/expressjs" class="css-1pwtf47"><span title="ExpressJS" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1163/hashtag.png" alt="ExpressJS" class="css-1rz3855"/></span><span class="css-i6njnm">ExpressJS</span></a><a href="/python" class="css-1pwtf47"><span title="Python" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/993/pUBY5pVj.png" alt="Python" class="css-1rz3855"/></span><span class="css-i6njnm">Python</span></a><a href="/flask" class="css-1pwtf47"><span title="Flask" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1001/default_6d109315b60108628b7cd3e159b84645c31ef0e2.png" alt="Flask" class="css-1rz3855"/></span><span class="css-i6njnm">Flask</span></a><a href="/amazon-kinesis" class="css-1pwtf47"><span title="Amazon Kinesis" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/433/default_6bea44ee4da746fbb7c9070a7ffac9b764d1ed79.png" alt="Amazon Kinesis" class="css-1rz3855"/></span><span class="css-i6njnm">Amazon Kinesis</span></a><a href="/amazon-kinesis-firehose" class="css-1pwtf47"><span title="Amazon Kinesis Firehose" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/3770/amazon-kinesis.png" alt="Amazon Kinesis Firehose" class="css-1rz3855"/></span><span class="css-i6njnm">Amazon Kinesis Firehose</span></a><a href="/amazon-sns" class="css-1pwtf47"><span title="Amazon SNS" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/396/amazon-sns.png" alt="Amazon SNS" class="css-1rz3855"/></span><span class="css-i6njnm">Amazon SNS</span></a><a href="/amazon-sqs" class="css-1pwtf47"><span title="Amazon SQS" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/395/amazon-sqs.png" alt="Amazon SQS" class="css-1rz3855"/></span><span class="css-i6njnm">Amazon SQS</span></a><a href="/aws-lambda" class="css-1pwtf47"><span title="AWS Lambda" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1909/aws-lambda.png" alt="AWS Lambda" class="css-1rz3855"/></span><span class="css-i6njnm">AWS Lambda</span></a><a href="/angular" class="css-1pwtf47"><span title="Angular" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/3745/cb8U-gL6_400x400.jpg" alt="Angular" class="css-1rz3855"/></span><span class="css-i6njnm">Angular</span></a><a href="/rxjs" class="css-1pwtf47"><span title="RxJS" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1796/984368.png" alt="RxJS" class="css-1rz3855"/></span><span class="css-i6njnm">RxJS</span></a><a href="/github" class="css-1pwtf47"><span title="GitHub" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/27/default_869c34d29acc794d60ecdd5d2b5bfc042a80a4ec.jpg" alt="GitHub" class="css-1rz3855"/></span><span class="css-i6njnm">GitHub</span></a><a href="/travis-ci" class="css-1pwtf47"><span title="Travis CI" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/460/Lu6cGu0z_400x400.png" alt="Travis CI" class="css-1rz3855"/></span><span class="css-i6njnm">Travis CI</span></a><a href="/terraform" class="css-1pwtf47"><span title="Terraform" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1276/og-image-8b3e4f7d.png" alt="Terraform" class="css-1rz3855"/></span><span class="css-i6njnm">Terraform</span></a><a href="/docker" class="css-1pwtf47"><span title="Docker" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/586/n4u37v9t_400x400.png" alt="Docker" class="css-1rz3855"/></span><span class="css-i6njnm">Docker</span></a><a href="/serverless" class="css-1pwtf47"><span title="Serverless" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/5095/serverless-logo.png" alt="Serverless" class="css-1rz3855"/></span><span class="css-i6njnm">Serverless</span></a><a href="/amazon-rds-for-mysql" class="css-1pwtf47"><span title="Amazon RDS" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/232/amazon-rds.png" alt="Amazon RDS" class="css-1rz3855"/></span><span class="css-i6njnm">Amazon RDS</span></a><a href="/amazon-dynamodb" class="css-1pwtf47"><span title="Amazon DynamoDB" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/389/amazon-dynamodb.png" alt="Amazon DynamoDB" class="css-1rz3855"/></span><span class="css-i6njnm">Amazon DynamoDB</span></a><a href="/amazon-s3" class="css-1pwtf47"><span title="Amazon S3" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/25/amazon-s3.png" alt="Amazon S3" class="css-1rz3855"/></span><span class="css-i6njnm">Amazon S3</span></a></div><div class="css-1dp4k20"><div class="css-ztg526"><p>We are in the process of building a modern content platform to deliver our content through various channels. We decided to go with Microservices architecture as we wanted scale. Microservice architecture style is an approach to developing an application as a suite of small independently deployable services built around specific business capabilities. You can gain modularity, extensive parallelism and cost-effective scaling by deploying services across many distributed servers. Microservices modularity facilitates independent updates/deployments, and helps to avoid single point of failure, which can help prevent large-scale outages. We also decided to use Event Driven Architecture pattern which is a popular distributed asynchronous architecture pattern used to produce highly scalable applications. The event-driven architecture is made up of highly decoupled, single-purpose event processing components that asynchronously receive and process events.</p> <p>To build our <span class="topic">#Backend</span> capabilities we decided to use the following: 1. <span class="topic">#Microservices</span> - <span class="tool">Java</span> with <span class="tool">Spring Boot</span> , <span class="tool">Node.js</span> with <span class="tool">ExpressJS</span> and <span class="tool">Python</span> with <span class="tool">Flask</span> 2. <span class="topic">#Eventsourcingframework</span> - <span class="tool">Amazon Kinesis</span> , <span class="tool">Amazon Kinesis Firehose</span> , <span class="tool">Amazon SNS</span> , <span class="tool">Amazon SQS</span>, <span class="tool">AWS Lambda</span> 3. <span class="topic">#Data</span> - <span class="tool">Amazon RDS</span> , <span class="tool">Amazon DynamoDB</span> , <span class="tool">Amazon S3</span> , <span class="tool">MongoDB Atlas</span> </p> <p>To build <span class="topic">#Webapps</span> we decided to use <span class="tool">Angular 2</span> with <span class="tool">RxJS</span> </p> <p><span class="topic">#Devops</span> - <span class="tool">GitHub</span> , <span class="tool">Travis CI</span> , <span class="tool">Terraform</span> , <span class="tool">Docker</span> , <span class="tool">Serverless</span> </p></div></div></div><a class="css-1srb7t4">See more</a></div><div class="css-uw1ldh"><div class="css-4gnhqq"><div class="css-xkasvz"><div class="css-atv6j6"><div class="css-1m8tyev"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div></div></div><div class="css-1vf0ygt"><div class="css-utnqcw"><div>John Kodumal</div></div><div class="css-ds0hbm">CTO<!-- --> at LaunchDarkly<!-- --> · <a href="/jkodumal/decisions/101738839992901798" class="css-nil"><time>Mar 12, 2019</time> <!-- -->| 17 upvotes · 1.8M views</a></div></div></div></div><div class="css-nil"><div class="css-dg4ww9"><svg xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21"><g fill="none" fill-rule="evenodd"><path fill="#068DFE" fill-rule="nonzero" d="M20.918 19.017l-1.442-4.195a10.3 10.3 0 0 0 1.062-4.537 10.208 10.208 0 0 0-2.949-7.207A10.199 10.199 0 0 0 10.436 0a10.23 10.23 0 0 0-7.428 3.006A10.228 10.228 0 0 0 0 10.437a10.199 10.199 0 0 0 3.077 7.153 10.207 10.207 0 0 0 7.191 2.95h.016a10.3 10.3 0 0 0 4.537-1.063l4.195 1.442a1.485 1.485 0 0 0 1.543-.357c.408-.408.545-.999.358-1.544z"></path><rect width="7" height="1.8" x="6" y="5" fill="#FFF" rx=".9"></rect><rect width="10" height="1.8" x="6" y="9" fill="#FFF" rx=".9"></rect><rect width="7" height="1.8" x="6" y="13" fill="#FFF" rx=".9"></rect></g></svg><div class="css-z9ms26">Shared insights</div><div class="css-6uh2e7">on</div><a href="/amazon-rds-for-mysql" class="css-1pwtf47"><span title="Amazon RDS" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/232/amazon-rds.png" alt="Amazon RDS" class="css-1rz3855"/></span><span class="css-i6njnm">Amazon RDS</span></a><a href="/postgresql" class="css-1pwtf47"><span title="PostgreSQL" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1028/ASOhU5xJ.png" alt="PostgreSQL" class="css-1rz3855"/></span><span class="css-i6njnm">PostgreSQL</span></a><a href="/timescaledb" class="css-1pwtf47"><span title="TimescaleDB" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/6765/20190510_Timescale_Logo_Tiger.png" alt="TimescaleDB" class="css-1rz3855"/></span><span class="css-i6njnm">TimescaleDB</span></a><a href="/patroni" class="css-1pwtf47"><span title="Patroni" class="css-t68yd0 service"><img src="https://img.stackshare.io/no-img-open-source.png" alt="Patroni" class="css-1rz3855"/></span><span class="css-i6njnm">Patroni</span></a><a href="/consul" class="css-1pwtf47"><span title="Consul" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/747/consul-logo-grad_teaser.png" alt="Consul" class="css-1rz3855"/></span><span class="css-i6njnm">Consul</span></a><a href="/amazon-elasticache" class="css-1pwtf47"><span title="Amazon ElastiCache" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/392/amazon-elasticache.png" alt="Amazon ElastiCache" class="css-1rz3855"/></span><span class="css-i6njnm">Amazon ElastiCache</span></a><a href="/amazon-ec2" class="css-1pwtf47"><span title="Amazon EC2" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/18/amazon-ec2.png" alt="Amazon EC2" class="css-1rz3855"/></span><span class="css-i6njnm">Amazon EC2</span></a><a href="/redis" class="css-1pwtf47"><span title="Redis" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1031/default_cbce472cd134adc6688572f999e9122b9657d4ba.png" alt="Redis" class="css-1rz3855"/></span><span class="css-i6njnm">Redis</span></a><a href="/amazon-kinesis" class="css-1pwtf47"><span title="Amazon Kinesis" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/433/default_6bea44ee4da746fbb7c9070a7ffac9b764d1ed79.png" alt="Amazon Kinesis" class="css-1rz3855"/></span><span class="css-i6njnm">Amazon Kinesis</span></a><a href="/kafka" class="css-1pwtf47"><span title="Kafka" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1063/kazUJooF_400x400.jpg" alt="Kafka" class="css-1rz3855"/></span><span class="css-i6njnm">Kafka</span></a><div class="css-6uh2e7">at</div><a itemscope="" itemType="http://schema.org/Organization" itemProp="url" href="/companies/launchdarkly" target="_blank" class="css-1j2w1cg"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div><div itemProp="name" class="css-1b2ktnx">LaunchDarkly</div></a></div><div class="css-1dp4k20"><div class="css-ztg526"><p>As we've evolved or added additional infrastructure to our stack, we've biased towards managed services. Most new backing stores are <span class="tool">Amazon RDS</span> instances now. We do use self-managed <span class="tool">PostgreSQL</span> with <span class="tool">TimescaleDB</span> for time-series data—this is made HA with the use of <span class="tool">Patroni</span> and <span class="tool">Consul</span>.</p> <p>We also use managed <span class="tool">Amazon ElastiCache</span> instances instead of spinning up <span class="tool">Amazon EC2</span> instances to run <span class="tool">Redis</span> workloads, as well as shifting to <span class="tool">Amazon Kinesis</span> instead of <span class="tool">Kafka</span>.</p></div><div class="css-13nf4of"><svg class="css-xd3exe" xmlns="http://www.w3.org/2000/svg" width="11" height="11" viewBox="0 0 11 11"><g fill="#49A8F9" fill-rule="evenodd"><path d="M10.5 0h-4a.5.5 0 0 0 0 1h2.793L4.146 6.146a.5.5 0 1 0 .708.708L10 1.707V4.5a.5.5 0 0 0 1 0v-4a.5.5 0 0 0-.5-.5"></path><path d="M8.5 5a.5.5 0 0 0-.5.5V10H1V3h4.5a.5.5 0 0 0 0-1h-5a.5.5 0 0 0-.5.5v8a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-5a.5.5 0 0 0-.5-.5"></path></g></svg><a href="https://stackshare.io/launchdarkly/redux-scaling-launchdarkly-from-4-to-200-billion-feature-flags-daily" title="Redux: Scaling LaunchDarkly from 4 to 200 billion feature flags daily - LaunchDarkly Tech Stack | StackShare" class="css-nil">Redux: Scaling LaunchDarkly from 4 to 200 billion feature flags daily - LaunchDarkly Tech Stack | StackShare</a></div></div></div><a class="css-1srb7t4">See more</a></div></div></div><div class="css-8qpfeu"><div class="css-kb8or3"><div class="css-1d3wilq"><div class="css-ljm4wn"><div class="css-mwikcm"><a href="/spark" class="css-1jltg37"><img src="https://img.stackshare.io/service/2220/thumb_retina_ca72c4715da998b0bf5d1c857958bed3.png" alt="Apache Spark logo" class="css-1489hth"/></a></div><div class="css-8wh4b7"><h2 class="css-pltn6z"><a href="/spark" class="css-1hhgtx3">Apache Spark</a></h2><div class="css-rpzmwi"><div class="css-12alag6"><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path fill-rule="evenodd" d="M20.467 21.867a2.415 2.415 0 0 1-2.318-1.74h-2.192l-.012.008-2.615-4.499h-1.598a2.415 2.415 0 1 1 0-1.35h1.641l-.058-.034 2.63-4.526.022.013h2.172a2.415 2.415 0 1 1 0 1.35h-1.424l-2.23 3.838-.002.003.001.004 2.234 3.843h1.431a2.415 2.415 0 1 1 2.318 3.09zm-.01-10.184a1.27 1.27 0 1 0-1.244-1.515v.492a1.27 1.27 0 0 0 1.244 1.023zm-11.043 2.01a1.268 1.268 0 1 0 0 2.537 1.268 1.268 0 0 0 0-2.537zm11.053 4.491a1.27 1.27 0 0 0-1.244 1.022v.493a1.27 1.27 0 0 0 1.244 1.022 1.27 1.27 0 0 0 0-2.537z"></path></g></svg></div><div class="css-1qckosq">2.8K</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg class="css-1a4uubp" xmlns="http://www.w3.org/2000/svg" width="20" height="17" viewBox="0 0 20 17"><path fill="#A09F9F" fill-rule="evenodd" stroke="#999" stroke-width=".2" d="M14.432 12.715l2.348-2.746a.415.415 0 0 1 .607-.038.47.47 0 0 1 .028.646l-2.64 3.09a.419.419 0 0 1-.3.15h-.014a.414.414 0 0 1-.3-.127l-1.498-1.516a.466.466 0 0 1-.014-.637.413.413 0 0 1 .606-.015l1.177 1.193zm-3.165-.868a3.749 3.749 0 0 0 3.744 3.745 3.749 3.749 0 0 0 3.744-3.745 3.749 3.749 0 0 0-3.744-3.745 3.749 3.749 0 0 0-3.744 3.745zm2.001-4.195a4.523 4.523 0 0 1 1.743-.35 4.55 4.55 0 0 1 4.545 4.545 4.55 4.55 0 0 1-4.545 4.545 4.55 4.55 0 0 1-4.545-4.545 4.53 4.53 0 0 1 1.91-3.688c-.026-.013-.045-.029-.045-.054V5.837c0-.159.08-.308.207-.395a.588.588 0 0 0 .254-.487V2.6c0-.907-.721-1.64-1.602-1.64h-.494c-.886 0-1.603.738-1.603 1.64v2.355c0 .192.095.376.255.487a.47.47 0 0 1 .207.395v2.268a.588.588 0 0 1-.32.526c-.288.145-1.791.921-3.181 2.089a.66.66 0 0 0-.235.511v1.612a.456.456 0 0 1-.458.473.47.47 0 0 1-.466-.478v-1.612c0-.487.207-.94.575-1.249.153-.129.307-.253.461-.373V7.21a.5.5 0 0 1 .214-.41.352.352 0 0 0 .156-.296V4.618c0-.666-.525-1.206-1.172-1.206h-.394c-.646 0-1.166.54-1.166 1.201v1.886c0 .121.058.231.155.296.136.09.214.245.214.41v1.817c0 .225-.121.42-.316.52a13.83 13.83 0 0 0-2.513 1.662.421.421 0 0 0-.146.325v1.291a.487.487 0 0 1-.481.496A.487.487 0 0 1 0 12.82v-1.291c0-.425.18-.821.501-1.091.967-.821 2.003-1.411 2.479-1.667V7.435a1.368 1.368 0 0 1-.369-.936V4.613c0-1.211.958-2.192 2.129-2.192h.394c1.177 0 2.129.986 2.129 2.192v1.886c0 .356-.136.686-.369.936V8.91a19.344 19.344 0 0 1 1.733-1.037V6.059a1.557 1.557 0 0 1-.462-1.109V2.595C8.165 1.162 9.305 0 10.7 0h.495c1.399 0 2.535 1.167 2.535 2.595V4.95c0 .424-.17.82-.462 1.109v1.593z"></path></svg></div><div class="css-1qckosq">3.2K</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2" d="M23.42 15.403c.855-.864.59-2.612-.892-2.612l-3.903.002c.148-.837.363-2.226.354-2.357-.082-1.242-.863-2.754-.896-2.815-.143-.27-.862-.634-1.586-.478-.935.203-1.03.808-1.027.975 0 0 .04 1.655.044 2.097-.447.996-1.99 3.613-2.457 3.815a.706.706 0 0 0-.37-.105H7.755A.76.76 0 0 0 7 14.69v6.908a.72.72 0 0 0 .71.665h4.43a.718.718 0 0 0 .711-.722v-.23s.165-.012.24.037c.285.183.636.414 1.095.414h6.61c2.47 0 2.205-2.224 1.98-2.527.417-.46.675-1.273.323-1.915.27-.29.746-1.09.32-1.917zM11.986 21.54H7.71v-6.894h4.278v6.894zm10.28-6.196l-.041.17c1.138.329.532 1.659-.284 1.745l-.04.17c1.091.282.57 1.652-.285 1.745l-.04.17c.891.149.675 1.691-.675 1.691l-6.722.003c-.475 0-.907-.549-1.257-.549h-.304v-5.306c.38-.239.846-.549 1.106-.772.49-.424 2.497-3.71 2.497-4.122 0-.412-.045-2.191-.045-2.191s.394-.514 1.272-.14c0 0 .74 1.406.815 2.526 0 0-.333 2.307-.512 3.03h4.66c1.146.002.927 1.659-.146 1.83z"></path></svg></div><div class="css-1qckosq">139</div></div></div></div><div class="css-q4ncy">Fast and general engine for large-scale data processing</div><div class="css-1mj0hbk"><div class="css-1drwozb"><div class="css-gbti5j"><label>Stacks</label><span>2.8K</span></div><div class="css-1ahj942"></div><div class="css-1an0suy"><label>Followers</label><span>3.2K</span><div>+ 1</div></div><div class="css-1ahj942"></div><div class="css-gbti5j"><label>Votes</label><span>139</span></div></div></div></div></div><div class="css-1dnnpo5"><div class="css-ubpjqb"><button data-testid="follow" class="css-14pk3xx"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> <!-- -->Follow</button><button data-testid="iUseThis" class="css-1o4togz"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> I use this</button></div><div class="css-gpa5xw"><div class="css-1ob9em9"><button class="css-1mpii3w">Join the Snowflake Build Summit</button></div></div></div></div><div class="css-1erkkk4"><div class="css-a55l86"><div class="css-usifiy">PROS OF <!-- -->APACHE SPARK</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">60</span></div></div><span class="css-rsz8c">Open-source</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">48</span></div></div><span class="css-rsz8c">Fast and Flexible</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">8</span></div></div><span class="css-rsz8c">Great for distributed SQL like applications</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">8</span></div></div><span class="css-rsz8c">One platform for every big data problem</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">6</span></div></div><span class="css-rsz8c">Easy to install and to use</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Works well for most Datascience usecases</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">Interactive Query</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">In memory Computation</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">Machine learning libratimery, Streaming in real </span></div></li></ul></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">CONS OF <!-- -->APACHE SPARK</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Speed</span></div></li></ul></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">COMPARE</div><div class="css-6t66tf"><div class="css-1bn5mmw"><a href="/stackups/spark-vs-kafka" class="css-1dnwvu3"><div class="css-1v4bhi8"><img src="https://img.stackshare.io/service/2220/thumb_retina_ca72c4715da998b0bf5d1c857958bed3.png" alt="Apache Spark logo" class="css-6wyd29"/><div class="css-19dpmz">VS</div><img src="https://img.stackshare.io/service/1063/thumb_retina_kazUJooF_400x400.jpg" alt="Kafka logo" class="css-6wyd29"/></div><div class="css-v6oua5"><div class="css-16r6zz5"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path d="M13.626 18.015l.511-.81a.405.405 0 0 0-.136-.565.422.422 0 0 0-.576.133l-.51.81c-.927 1.469-2.25 2.312-3.632 2.312H7.416a.412.412 0 1 0 0 .823h1.87c1.68-.007 3.26-.99 4.34-2.703zm9.944-7.882l-2.023-1.99a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.291h-1.939c-1.676 0-3.26.984-4.34 2.697l-.314.498a.405.405 0 0 0 .137.566.42.42 0 0 0 .572-.134l.313-.499c.927-1.468 2.249-2.308 3.632-2.308h1.936l-1.315 1.291a.403.403 0 0 0 0 .579c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.406.406 0 0 0-.003-.58zm-.862.34v-.04l.02.02-.02.02z"></path><path d="M20.954 22.581c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.403.403 0 0 0 0-.58l-2.027-1.986a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.292h-1.877c-1.38 0-2.706-.843-3.632-2.312L13.69 12.71c-1.08-1.716-2.664-2.697-4.34-2.697H7.416a.412.412 0 1 0 0 .823h1.931c1.38 0 2.705.843 3.632 2.309l3.073 4.874c1.08 1.716 2.664 2.7 4.34 2.7h1.877l-1.315 1.291a.4.4 0 0 0 0 .572zm1.754-2.265l.02.02-.02.02v-.04z"></path></g></svg></div><div>Compare Apache Spark vs Kafka</div></div></a></div></div></div></div></div><div class="css-f2odf3"><div class="css-1m02by6"><h2>related Apache Spark posts</h2></div><div class="css-uw1ldh"><div class="css-4gnhqq"><div class="css-xkasvz"><div class="css-atv6j6"><div class="css-1m8tyev"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div></div></div><div class="css-1vf0ygt"><div class="css-utnqcw"><div>Eric Colson</div></div><div class="css-ds0hbm">Chief Algorithms Officer<!-- --> at Stitch Fix<!-- --> · <a href="/ecolson/decisions/101904378398432049" class="css-nil"><time>Apr 10, 2019</time> <!-- -->| 21 upvotes · 2.6M views</a></div></div></div></div><div class="css-nil"><div class="css-dg4ww9"><svg xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21"><g fill="none" fill-rule="evenodd"><path fill="#068DFE" fill-rule="nonzero" d="M20.918 19.017l-1.442-4.195a10.3 10.3 0 0 0 1.062-4.537 10.208 10.208 0 0 0-2.949-7.207A10.199 10.199 0 0 0 10.436 0a10.23 10.23 0 0 0-7.428 3.006A10.228 10.228 0 0 0 0 10.437a10.199 10.199 0 0 0 3.077 7.153 10.207 10.207 0 0 0 7.191 2.95h.016a10.3 10.3 0 0 0 4.537-1.063l4.195 1.442a1.485 1.485 0 0 0 1.543-.357c.408-.408.545-.999.358-1.544z"></path><rect width="7" height="1.8" x="6" y="5" fill="#FFF" rx=".9"></rect><rect width="10" height="1.8" x="6" y="9" fill="#FFF" rx=".9"></rect><rect width="7" height="1.8" x="6" y="13" fill="#FFF" rx=".9"></rect></g></svg><div class="css-z9ms26">Shared insights</div><div class="css-6uh2e7">on</div><a href="/kafka" class="css-1pwtf47"><span title="Kafka" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1063/kazUJooF_400x400.jpg" alt="Kafka" class="css-1rz3855"/></span><span class="css-i6njnm">Kafka</span></a><a href="/postgresql" class="css-1pwtf47"><span title="PostgreSQL" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1028/ASOhU5xJ.png" alt="PostgreSQL" class="css-1rz3855"/></span><span class="css-i6njnm">PostgreSQL</span></a><a href="/amazon-s3" class="css-1pwtf47"><span title="Amazon S3" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/25/amazon-s3.png" alt="Amazon S3" class="css-1rz3855"/></span><span class="css-i6njnm">Amazon S3</span></a><a href="/spark" class="css-1pwtf47"><span title="Apache Spark" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/2220/ca72c4715da998b0bf5d1c857958bed3.png" alt="Apache Spark" class="css-1rz3855"/></span><span class="css-i6njnm">Apache Spark</span></a><a href="/presto" class="css-1pwtf47"><span title="Presto" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/2606/default_9c42299fc673a12eed0ad20cb7f5c1fd4ef5c80f.png" alt="Presto" class="css-1rz3855"/></span><span class="css-i6njnm">Presto</span></a><a href="/python" class="css-1pwtf47"><span title="Python" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/993/pUBY5pVj.png" alt="Python" class="css-1rz3855"/></span><span class="css-i6njnm">Python</span></a><a href="/r-language" class="css-1pwtf47"><span title="R Language" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1213/r-logo.png" alt="R Language" class="css-1rz3855"/></span><span class="css-i6njnm">R Language</span></a><a href="/pytorch" class="css-1pwtf47"><span title="PyTorch" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/8171/YYpjkbVn_400x400.jpg" alt="PyTorch" class="css-1rz3855"/></span><span class="css-i6njnm">PyTorch</span></a><a href="/docker" class="css-1pwtf47"><span title="Docker" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/586/n4u37v9t_400x400.png" alt="Docker" class="css-1rz3855"/></span><span class="css-i6njnm">Docker</span></a><a href="/amazon-ec2-container-service" class="css-1pwtf47"><span title="Amazon EC2 Container Service" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1908/amazon-ecs.png" alt="Amazon EC2 Container Service" class="css-1rz3855"/></span><span class="css-i6njnm">Amazon EC2 Container Service</span></a><div class="css-6uh2e7">at</div><a itemscope="" itemType="http://schema.org/Organization" itemProp="url" href="/companies/stitch-fix" target="_blank" class="css-1j2w1cg"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div><div itemProp="name" class="css-1b2ktnx">Stitch Fix</div></a></div><div class="css-1dp4k20"><div class="css-ztg526"><p>The algorithms and data infrastructure at Stitch Fix is housed in <span class="topic">#AWS</span>. Data acquisition is split between events flowing through <span class="tool">Kafka</span>, and periodic snapshots of <span class="tool">PostgreSQL</span> DBs. We store data in an <span class="tool">Amazon S3</span> based data warehouse. <span class="tool">Apache Spark</span> on Yarn is our tool of choice for data movement and <span class="topic">#ETL</span>. Because our storage layer (s3) is decoupled from our processing layer, we are able to scale our compute environment very elastically. We have several semi-permanent, autoscaling Yarn clusters running to serve our data processing needs. While the bulk of our compute infrastructure is dedicated to algorithmic processing, we also implemented <span class="tool">Presto</span> for adhoc queries and dashboards.</p> <p>Beyond data movement and ETL, most <span class="topic">#ML</span> centric jobs (e.g. model training and execution) run in a similarly elastic environment as containers running <span class="tool">Python</span> and <span class="tool">R</span> code on <span class="tool">Amazon EC2 Container Service</span> clusters. The execution of batch jobs on top of ECS is managed by Flotilla, a service we built in house and open sourced (see <a href="https://github.com/stitchfix/flotilla-os" rel="nofollow noopener" target="_blank">https://github.com/stitchfix/flotilla-os</a>).</p> <p>At Stitch Fix, algorithmic integrations are pervasive across the business. We have dozens of data products actively integrated systems. That requires serving layer that is robust, agile, flexible, and allows for self-service. Models produced on Flotilla are packaged for deployment in production using Khan, another framework we've developed internally. Khan provides our data scientists the ability to quickly productionize those models they've developed with open source frameworks in Python 3 (e.g. <span class="tool">PyTorch</span>, sklearn), by automatically packaging them as <span class="tool">Docker</span> containers and deploying to Amazon ECS. This provides our data scientist a one-click method of getting from their algorithms to production. We then integrate those deployments into a service mesh, which allows us to A/B test various implementations in our product.</p> <p>For more info:</p> <ul> <li>Our Algorithms Tour: <a href="https://algorithms-tour.stitchfix.com/" rel="nofollow noopener" target="_blank">https://algorithms-tour.stitchfix.com/</a> </li> <li>Our blog: <a href="https://multithreaded.stitchfix.com/blog/" rel="nofollow noopener" target="_blank">https://multithreaded.stitchfix.com/blog/</a> </li> <li>Careers: <a href="https://multithreaded.stitchfix.com/careers/" rel="nofollow noopener" target="_blank">https://multithreaded.stitchfix.com/careers/</a> </li> </ul> <p><span class="topic">#DataScience</span> <span class="topic">#DataStack</span> <span class="topic">#Data</span> </p></div><div class="css-13nf4of"><svg class="css-xd3exe" xmlns="http://www.w3.org/2000/svg" width="11" height="11" viewBox="0 0 11 11"><g fill="#49A8F9" fill-rule="evenodd"><path d="M10.5 0h-4a.5.5 0 0 0 0 1h2.793L4.146 6.146a.5.5 0 1 0 .708.708L10 1.707V4.5a.5.5 0 0 0 1 0v-4a.5.5 0 0 0-.5-.5"></path><path d="M8.5 5a.5.5 0 0 0-.5.5V10H1V3h4.5a.5.5 0 0 0 0-1h-5a.5.5 0 0 0-.5.5v8a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-5a.5.5 0 0 0-.5-.5"></path></g></svg><a href="https://algorithms-tour.stitchfix.com/" title="Stitch Fix Algorithms Tour" class="css-nil">Stitch Fix Algorithms Tour</a></div></div></div><a class="css-1srb7t4">See more</a></div><div class="css-uw1ldh"><div class="css-4gnhqq"><div class="css-xkasvz"><div class="css-atv6j6"><div class="css-1m8tyev"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div></div></div><div class="css-1vf0ygt"><div class="css-utnqcw"><div>Conor Myhrvold</div></div><div class="css-ds0hbm">Tech Brand Mgr, Office of CTO<!-- --> at Uber<!-- --> · <a href="/conor/decisions/101184618312136914" class="css-nil"><time>Dec 4, 2018</time> <!-- -->| 7 upvotes · 1.2M views</a></div></div></div></div><div class="css-nil"><div class="css-dg4ww9"><svg xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21"><g fill="none" fill-rule="evenodd"><path fill="#068DFE" fill-rule="nonzero" d="M20.918 19.017l-1.442-4.195a10.3 10.3 0 0 0 1.062-4.537 10.208 10.208 0 0 0-2.949-7.207A10.199 10.199 0 0 0 10.436 0a10.23 10.23 0 0 0-7.428 3.006A10.228 10.228 0 0 0 0 10.437a10.199 10.199 0 0 0 3.077 7.153 10.207 10.207 0 0 0 7.191 2.95h.016a10.3 10.3 0 0 0 4.537-1.063l4.195 1.442a1.485 1.485 0 0 0 1.543-.357c.408-.408.545-.999.358-1.544z"></path><rect width="7" height="1.8" x="6" y="5" fill="#FFF" rx=".9"></rect><rect width="10" height="1.8" x="6" y="9" fill="#FFF" rx=".9"></rect><rect width="7" height="1.8" x="6" y="13" fill="#FFF" rx=".9"></rect></g></svg><div class="css-z9ms26">Shared insights</div><div class="css-6uh2e7">on</div><a href="/kafka" class="css-1pwtf47"><span title="Kafka" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1063/kazUJooF_400x400.jpg" alt="Kafka" class="css-1rz3855"/></span><span class="css-i6njnm">Kafka</span></a><a href="/kafka-manager" class="css-1pwtf47"><span title="Kafka Manager" class="css-t68yd0 service"><img src="https://img.stackshare.io/no-img-open-source.png" alt="Kafka Manager" class="css-1rz3855"/></span><span class="css-i6njnm">Kafka Manager</span></a><a href="/hadoop" class="css-1pwtf47"><span title="Hadoop" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1044/elephant_rgb_sq.png" alt="Hadoop" class="css-1rz3855"/></span><span class="css-i6njnm">Hadoop</span></a><a href="/spark" class="css-1pwtf47"><span title="Apache Spark" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/2220/ca72c4715da998b0bf5d1c857958bed3.png" alt="Apache Spark" class="css-1rz3855"/></span><span class="css-i6njnm">Apache Spark</span></a><a href="/github" class="css-1pwtf47"><span title="GitHub" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/27/default_869c34d29acc794d60ecdd5d2b5bfc042a80a4ec.jpg" alt="GitHub" class="css-1rz3855"/></span><span class="css-i6njnm">GitHub</span></a><div class="css-6uh2e7">at</div><a itemscope="" itemType="http://schema.org/Organization" itemProp="url" href="/companies/uber-technologies" target="_blank" class="css-1j2w1cg"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div><div itemProp="name" class="css-1b2ktnx">Uber Technologies</div></a></div><div class="css-1dp4k20"><div class="css-ztg526"><p>Why we built Marmaray, an open source generic data ingestion and dispersal framework and library for Apache <span class="tool">Hadoop</span> :</p> <p>Built and designed by our Hadoop Platform team, Marmaray is a plug-in-based framework built on top of the Hadoop ecosystem. Users can add support to ingest data from any source and disperse to any sink leveraging the use of <span class="tool">Apache Spark</span> . The name, Marmaray, comes from a tunnel in Turkey connecting Europe and Asia. Similarly, we envisioned Marmaray within Uber as a pipeline connecting data from any source to any sink depending on customer preference:</p> <p><a href="https://eng.uber.com/marmaray-hadoop-ingestion-open-source/" rel="nofollow noopener" target="_blank">https://eng.uber.com/marmaray-hadoop-ingestion-open-source/</a></p> <p>(Direct <span class="tool">GitHub</span> repo: <a href="https://github.com/uber/marmaray" rel="nofollow noopener" target="_blank">https://github.com/uber/marmaray</a> <span class="tool">Kafka</span> <span class="tool">Kafka Manager</span> )</p></div><div class="css-13nf4of"><svg class="css-xd3exe" xmlns="http://www.w3.org/2000/svg" width="11" height="11" viewBox="0 0 11 11"><g fill="#49A8F9" fill-rule="evenodd"><path d="M10.5 0h-4a.5.5 0 0 0 0 1h2.793L4.146 6.146a.5.5 0 1 0 .708.708L10 1.707V4.5a.5.5 0 0 0 1 0v-4a.5.5 0 0 0-.5-.5"></path><path d="M8.5 5a.5.5 0 0 0-.5.5V10H1V3h4.5a.5.5 0 0 0 0-1h-5a.5.5 0 0 0-.5.5v8a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-5a.5.5 0 0 0-.5-.5"></path></g></svg><a href="https://eng.uber.com/marmaray-hadoop-ingestion-open-source/" title="Marmaray: An Open Source Generic Data Ingestion and Dispersal Framework and Library for Apache Hadoop | Uber Engineering Blog" class="css-nil">Marmaray: An Open Source Generic Data Ingestion and Dispersal Framework and Library for Apache Hadoop | Uber Engineering Blog</a></div></div></div><a class="css-1srb7t4">See more</a></div></div></div><div class="css-8qpfeu"><div class="css-kb8or3"><div class="css-1d3wilq"><div class="css-ljm4wn"><div class="css-mwikcm"><a href="/akka" class="css-1jltg37"><img src="https://img.stackshare.io/service/1773/thumb_retina_bxLhidly.png" alt="Akka logo" class="css-1489hth"/></a></div><div class="css-8wh4b7"><h2 class="css-pltn6z"><a href="/akka" class="css-1hhgtx3">Akka</a></h2><div class="css-rpzmwi"><div class="css-12alag6"><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path fill-rule="evenodd" d="M20.467 21.867a2.415 2.415 0 0 1-2.318-1.74h-2.192l-.012.008-2.615-4.499h-1.598a2.415 2.415 0 1 1 0-1.35h1.641l-.058-.034 2.63-4.526.022.013h2.172a2.415 2.415 0 1 1 0 1.35h-1.424l-2.23 3.838-.002.003.001.004 2.234 3.843h1.431a2.415 2.415 0 1 1 2.318 3.09zm-.01-10.184a1.27 1.27 0 1 0-1.244-1.515v.492a1.27 1.27 0 0 0 1.244 1.023zm-11.043 2.01a1.268 1.268 0 1 0 0 2.537 1.268 1.268 0 0 0 0-2.537zm11.053 4.491a1.27 1.27 0 0 0-1.244 1.022v.493a1.27 1.27 0 0 0 1.244 1.022 1.27 1.27 0 0 0 0-2.537z"></path></g></svg></div><div class="css-1qckosq">952</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg class="css-1a4uubp" xmlns="http://www.w3.org/2000/svg" width="20" height="17" viewBox="0 0 20 17"><path fill="#A09F9F" fill-rule="evenodd" stroke="#999" stroke-width=".2" d="M14.432 12.715l2.348-2.746a.415.415 0 0 1 .607-.038.47.47 0 0 1 .028.646l-2.64 3.09a.419.419 0 0 1-.3.15h-.014a.414.414 0 0 1-.3-.127l-1.498-1.516a.466.466 0 0 1-.014-.637.413.413 0 0 1 .606-.015l1.177 1.193zm-3.165-.868a3.749 3.749 0 0 0 3.744 3.745 3.749 3.749 0 0 0 3.744-3.745 3.749 3.749 0 0 0-3.744-3.745 3.749 3.749 0 0 0-3.744 3.745zm2.001-4.195a4.523 4.523 0 0 1 1.743-.35 4.55 4.55 0 0 1 4.545 4.545 4.55 4.55 0 0 1-4.545 4.545 4.55 4.55 0 0 1-4.545-4.545 4.53 4.53 0 0 1 1.91-3.688c-.026-.013-.045-.029-.045-.054V5.837c0-.159.08-.308.207-.395a.588.588 0 0 0 .254-.487V2.6c0-.907-.721-1.64-1.602-1.64h-.494c-.886 0-1.603.738-1.603 1.64v2.355c0 .192.095.376.255.487a.47.47 0 0 1 .207.395v2.268a.588.588 0 0 1-.32.526c-.288.145-1.791.921-3.181 2.089a.66.66 0 0 0-.235.511v1.612a.456.456 0 0 1-.458.473.47.47 0 0 1-.466-.478v-1.612c0-.487.207-.94.575-1.249.153-.129.307-.253.461-.373V7.21a.5.5 0 0 1 .214-.41.352.352 0 0 0 .156-.296V4.618c0-.666-.525-1.206-1.172-1.206h-.394c-.646 0-1.166.54-1.166 1.201v1.886c0 .121.058.231.155.296.136.09.214.245.214.41v1.817c0 .225-.121.42-.316.52a13.83 13.83 0 0 0-2.513 1.662.421.421 0 0 0-.146.325v1.291a.487.487 0 0 1-.481.496A.487.487 0 0 1 0 12.82v-1.291c0-.425.18-.821.501-1.091.967-.821 2.003-1.411 2.479-1.667V7.435a1.368 1.368 0 0 1-.369-.936V4.613c0-1.211.958-2.192 2.129-2.192h.394c1.177 0 2.129.986 2.129 2.192v1.886c0 .356-.136.686-.369.936V8.91a19.344 19.344 0 0 1 1.733-1.037V6.059a1.557 1.557 0 0 1-.462-1.109V2.595C8.165 1.162 9.305 0 10.7 0h.495c1.399 0 2.535 1.167 2.535 2.595V4.95c0 .424-.17.82-.462 1.109v1.593z"></path></svg></div><div class="css-1qckosq">948</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2" d="M23.42 15.403c.855-.864.59-2.612-.892-2.612l-3.903.002c.148-.837.363-2.226.354-2.357-.082-1.242-.863-2.754-.896-2.815-.143-.27-.862-.634-1.586-.478-.935.203-1.03.808-1.027.975 0 0 .04 1.655.044 2.097-.447.996-1.99 3.613-2.457 3.815a.706.706 0 0 0-.37-.105H7.755A.76.76 0 0 0 7 14.69v6.908a.72.72 0 0 0 .71.665h4.43a.718.718 0 0 0 .711-.722v-.23s.165-.012.24.037c.285.183.636.414 1.095.414h6.61c2.47 0 2.205-2.224 1.98-2.527.417-.46.675-1.273.323-1.915.27-.29.746-1.09.32-1.917zM11.986 21.54H7.71v-6.894h4.278v6.894zm10.28-6.196l-.041.17c1.138.329.532 1.659-.284 1.745l-.04.17c1.091.282.57 1.652-.285 1.745l-.04.17c.891.149.675 1.691-.675 1.691l-6.722.003c-.475 0-.907-.549-1.257-.549h-.304v-5.306c.38-.239.846-.549 1.106-.772.49-.424 2.497-3.71 2.497-4.122 0-.412-.045-2.191-.045-2.191s.394-.514 1.272-.14c0 0 .74 1.406.815 2.526 0 0-.333 2.307-.512 3.03h4.66c1.146.002.927 1.659-.146 1.83z"></path></svg></div><div class="css-1qckosq">88</div></div></div></div><div class="css-q4ncy">Build powerful concurrent &amp; distributed applications more easily</div><div class="css-1mj0hbk"><div class="css-1drwozb"><div class="css-gbti5j"><label>Stacks</label><span>952</span></div><div class="css-1ahj942"></div><div class="css-1an0suy"><label>Followers</label><span>948</span><div>+ 1</div></div><div class="css-1ahj942"></div><div class="css-gbti5j"><label>Votes</label><span>88</span></div></div></div></div></div><div class="css-1dnnpo5"><div class="css-ubpjqb"><button data-testid="follow" class="css-14pk3xx"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> <!-- -->Follow</button><button data-testid="iUseThis" class="css-1o4togz"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> I use this</button></div></div></div><div class="css-1erkkk4"><div class="css-a55l86"><div class="css-usifiy">PROS OF <!-- -->AKKA</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">32</span></div></div><span class="css-rsz8c">Great concurrency model</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">17</span></div></div><span class="css-rsz8c">Fast</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">12</span></div></div><span class="css-rsz8c">Actor Library</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">10</span></div></div><span class="css-rsz8c">Open source</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">7</span></div></div><span class="css-rsz8c">Resilient </span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">5</span></div></div><span class="css-rsz8c">Scalable</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">5</span></div></div><span class="css-rsz8c">Message driven</span></div></li></ul></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">CONS OF <!-- -->AKKA</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Mixing futures with Akka tell is difficult</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">Closing of futures</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">No type safety</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Very difficult to refactor</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Typed actors still not stable</span></div></li></ul></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">COMPARE</div><div class="css-6t66tf"><div class="css-1bn5mmw"><a href="/stackups/akka-vs-kafka" class="css-1dnwvu3"><div class="css-1v4bhi8"><img src="https://img.stackshare.io/service/1773/thumb_retina_bxLhidly.png" alt="Akka logo" class="css-6wyd29"/><div class="css-19dpmz">VS</div><img src="https://img.stackshare.io/service/1063/thumb_retina_kazUJooF_400x400.jpg" alt="Kafka logo" class="css-6wyd29"/></div><div class="css-v6oua5"><div class="css-16r6zz5"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path d="M13.626 18.015l.511-.81a.405.405 0 0 0-.136-.565.422.422 0 0 0-.576.133l-.51.81c-.927 1.469-2.25 2.312-3.632 2.312H7.416a.412.412 0 1 0 0 .823h1.87c1.68-.007 3.26-.99 4.34-2.703zm9.944-7.882l-2.023-1.99a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.291h-1.939c-1.676 0-3.26.984-4.34 2.697l-.314.498a.405.405 0 0 0 .137.566.42.42 0 0 0 .572-.134l.313-.499c.927-1.468 2.249-2.308 3.632-2.308h1.936l-1.315 1.291a.403.403 0 0 0 0 .579c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.406.406 0 0 0-.003-.58zm-.862.34v-.04l.02.02-.02.02z"></path><path d="M20.954 22.581c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.403.403 0 0 0 0-.58l-2.027-1.986a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.292h-1.877c-1.38 0-2.706-.843-3.632-2.312L13.69 12.71c-1.08-1.716-2.664-2.697-4.34-2.697H7.416a.412.412 0 1 0 0 .823h1.931c1.38 0 2.705.843 3.632 2.309l3.073 4.874c1.08 1.716 2.664 2.7 4.34 2.7h1.877l-1.315 1.291a.4.4 0 0 0 0 .572zm1.754-2.265l.02.02-.02.02v-.04z"></path></g></svg></div><div>Compare Akka vs Kafka</div></div></a></div></div></div></div></div><div class="css-f2odf3"><div class="css-1m02by6"><h2>related Akka posts</h2></div><div class="css-uw1ldh"><div class="css-4gnhqq"><div class="css-xkasvz"><div class="css-atv6j6"><div class="css-1m8tyev"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div></div></div><div class="css-1vf0ygt"><div class="css-utnqcw"><div>StackShare Editors</div></div><div class="css-ds0hbm"><a href="/stackbot/decisions/102366434266643754" class="css-nil"><time>Sep 3, 2016</time> <!-- -->| 1 upvote · 349.3K views</a></div></div></div></div><div class="css-nil"><div class="css-dg4ww9"><svg xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21"><g fill="none" fill-rule="evenodd"><path fill="#068DFE" fill-rule="nonzero" d="M20.918 19.017l-1.442-4.195a10.3 10.3 0 0 0 1.062-4.537 10.208 10.208 0 0 0-2.949-7.207A10.199 10.199 0 0 0 10.436 0a10.23 10.23 0 0 0-7.428 3.006A10.228 10.228 0 0 0 0 10.437a10.199 10.199 0 0 0 3.077 7.153 10.207 10.207 0 0 0 7.191 2.95h.016a10.3 10.3 0 0 0 4.537-1.063l4.195 1.442a1.485 1.485 0 0 0 1.543-.357c.408-.408.545-.999.358-1.544z"></path><rect width="7" height="1.8" x="6" y="5" fill="#FFF" rx=".9"></rect><rect width="10" height="1.8" x="6" y="9" fill="#FFF" rx=".9"></rect><rect width="7" height="1.8" x="6" y="13" fill="#FFF" rx=".9"></rect></g></svg><div class="css-z9ms26">Shared insights</div><div class="css-6uh2e7">on</div><a href="/kafka" class="css-1pwtf47"><span title="Kafka" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1063/kazUJooF_400x400.jpg" alt="Kafka" class="css-1rz3855"/></span><span class="css-i6njnm">Kafka</span></a><a href="/scala" class="css-1pwtf47"><span title="Scala" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1012/scala.png" alt="Scala" class="css-1rz3855"/></span><span class="css-i6njnm">Scala</span></a><a href="/cassandra" class="css-1pwtf47"><span title="Cassandra" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1032/cassandra_small.png" alt="Cassandra" class="css-1rz3855"/></span><span class="css-i6njnm">Cassandra</span></a><a href="/akka" class="css-1pwtf47"><span title="Akka" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1773/bxLhidly.png" alt="Akka" class="css-1rz3855"/></span><span class="css-i6njnm">Akka</span></a><div class="css-6uh2e7">at</div><a itemscope="" itemType="http://schema.org/Organization" itemProp="url" href="/companies/pagerduty" target="_blank" class="css-1j2w1cg"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div><div itemProp="name" class="css-1b2ktnx">PagerDuty</div></a></div><div class="css-1dp4k20"><div class="css-ztg526"><p>To solve the problem of scheduling and executing arbitrary tasks in its distributed infrastructure, PagerDuty created an open-source tool called Scheduler. Scheduler is written in Scala and uses Cassandra for task persistence. It also adds Apache Kafka to handle task queuing and partitioning, with Akka to structure the library’s concurrency.</p> <p>The service’s logic schedules a task by passing it to the Scheduler’s Scala API, which serializes the task metadata and enqueues it into Kafka. Scheduler then consumes the tasks, and posts them to Cassandra to prevent data loss. </p></div><div class="css-13nf4of"><svg class="css-xd3exe" xmlns="http://www.w3.org/2000/svg" width="11" height="11" viewBox="0 0 11 11"><g fill="#49A8F9" fill-rule="evenodd"><path d="M10.5 0h-4a.5.5 0 0 0 0 1h2.793L4.146 6.146a.5.5 0 1 0 .708.708L10 1.707V4.5a.5.5 0 0 0 1 0v-4a.5.5 0 0 0-.5-.5"></path><path d="M8.5 5a.5.5 0 0 0-.5.5V10H1V3h4.5a.5.5 0 0 0 0-1h-5a.5.5 0 0 0-.5.5v8a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-5a.5.5 0 0 0-.5-.5"></path></g></svg><a href="https://www.pagerduty.com/eng/distributed-task-scheduling-pt1/" title="Distributed Task Scheduling with Akka, Kafka, Cassandra | PagerDuty" class="css-nil">Distributed Task Scheduling with Akka, Kafka, Cassandra | PagerDuty</a></div></div></div><a class="css-1srb7t4">See more</a></div><div class="css-uw1ldh"><div class="css-4gnhqq"><div class="css-xkasvz"><div class="css-atv6j6"><div class="css-1m8tyev"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div></div></div><div class="css-1vf0ygt"><div class="css-utnqcw"><div>Lawrence Hecht</div></div><div class="css-ds0hbm"><a href="/LawrenceHecht/decisions/102100826524403008" class="css-nil"><time>May 15, 2019</time> <!-- -->| 1 upvote · 347.3K views</a></div></div></div></div><div class="css-nil"><div class="css-dg4ww9"><svg xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21"><g fill="none" fill-rule="evenodd"><path fill="#068DFE" fill-rule="nonzero" d="M20.918 19.017l-1.442-4.195a10.3 10.3 0 0 0 1.062-4.537 10.208 10.208 0 0 0-2.949-7.207A10.199 10.199 0 0 0 10.436 0a10.23 10.23 0 0 0-7.428 3.006A10.228 10.228 0 0 0 0 10.437a10.199 10.199 0 0 0 3.077 7.153 10.207 10.207 0 0 0 7.191 2.95h.016a10.3 10.3 0 0 0 4.537-1.063l4.195 1.442a1.485 1.485 0 0 0 1.543-.357c.408-.408.545-.999.358-1.544z"></path><rect width="7" height="1.8" x="6" y="5" fill="#FFF" rx=".9"></rect><rect width="10" height="1.8" x="6" y="9" fill="#FFF" rx=".9"></rect><rect width="7" height="1.8" x="6" y="13" fill="#FFF" rx=".9"></rect></g></svg><div class="css-z9ms26">Shared insights</div><div class="css-6uh2e7">on</div><a href="/akka" class="css-1pwtf47"><span title="Akka" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1773/bxLhidly.png" alt="Akka" class="css-1rz3855"/></span><span class="css-i6njnm">Akka</span></a><a href="/kafka" class="css-1pwtf47"><span title="Kafka" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1063/kazUJooF_400x400.jpg" alt="Kafka" class="css-1rz3855"/></span><span class="css-i6njnm">Kafka</span></a></div><div class="css-1dp4k20"><div class="css-ztg526"><p>I decided to use <span class="tool">Akka</span> instead of <span class="tool">Kafka</span> streams because I have personal relationships at @Lightbend. </p></div></div></div><a class="css-1srb7t4">See more</a></div></div></div><div class="css-8qpfeu"><div class="css-kb8or3"><div class="css-1d3wilq"><div class="css-ljm4wn"><div class="css-mwikcm"><a href="/apache-storm" class="css-1jltg37"><img src="https://img.stackshare.io/service/1595/thumb_retina_WC8j4Gr3.png" alt="Apache Storm logo" class="css-1489hth"/></a></div><div class="css-8wh4b7"><h2 class="css-pltn6z"><a href="/apache-storm" class="css-1hhgtx3">Apache Storm</a></h2><div class="css-rpzmwi"><div class="css-12alag6"><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path fill-rule="evenodd" d="M20.467 21.867a2.415 2.415 0 0 1-2.318-1.74h-2.192l-.012.008-2.615-4.499h-1.598a2.415 2.415 0 1 1 0-1.35h1.641l-.058-.034 2.63-4.526.022.013h2.172a2.415 2.415 0 1 1 0 1.35h-1.424l-2.23 3.838-.002.003.001.004 2.234 3.843h1.431a2.415 2.415 0 1 1 2.318 3.09zm-.01-10.184a1.27 1.27 0 1 0-1.244-1.515v.492a1.27 1.27 0 0 0 1.244 1.023zm-11.043 2.01a1.268 1.268 0 1 0 0 2.537 1.268 1.268 0 0 0 0-2.537zm11.053 4.491a1.27 1.27 0 0 0-1.244 1.022v.493a1.27 1.27 0 0 0 1.244 1.022 1.27 1.27 0 0 0 0-2.537z"></path></g></svg></div><div class="css-1qckosq">187</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg class="css-1a4uubp" xmlns="http://www.w3.org/2000/svg" width="20" height="17" viewBox="0 0 20 17"><path fill="#A09F9F" fill-rule="evenodd" stroke="#999" stroke-width=".2" d="M14.432 12.715l2.348-2.746a.415.415 0 0 1 .607-.038.47.47 0 0 1 .028.646l-2.64 3.09a.419.419 0 0 1-.3.15h-.014a.414.414 0 0 1-.3-.127l-1.498-1.516a.466.466 0 0 1-.014-.637.413.413 0 0 1 .606-.015l1.177 1.193zm-3.165-.868a3.749 3.749 0 0 0 3.744 3.745 3.749 3.749 0 0 0 3.744-3.745 3.749 3.749 0 0 0-3.744-3.745 3.749 3.749 0 0 0-3.744 3.745zm2.001-4.195a4.523 4.523 0 0 1 1.743-.35 4.55 4.55 0 0 1 4.545 4.545 4.55 4.55 0 0 1-4.545 4.545 4.55 4.55 0 0 1-4.545-4.545 4.53 4.53 0 0 1 1.91-3.688c-.026-.013-.045-.029-.045-.054V5.837c0-.159.08-.308.207-.395a.588.588 0 0 0 .254-.487V2.6c0-.907-.721-1.64-1.602-1.64h-.494c-.886 0-1.603.738-1.603 1.64v2.355c0 .192.095.376.255.487a.47.47 0 0 1 .207.395v2.268a.588.588 0 0 1-.32.526c-.288.145-1.791.921-3.181 2.089a.66.66 0 0 0-.235.511v1.612a.456.456 0 0 1-.458.473.47.47 0 0 1-.466-.478v-1.612c0-.487.207-.94.575-1.249.153-.129.307-.253.461-.373V7.21a.5.5 0 0 1 .214-.41.352.352 0 0 0 .156-.296V4.618c0-.666-.525-1.206-1.172-1.206h-.394c-.646 0-1.166.54-1.166 1.201v1.886c0 .121.058.231.155.296.136.09.214.245.214.41v1.817c0 .225-.121.42-.316.52a13.83 13.83 0 0 0-2.513 1.662.421.421 0 0 0-.146.325v1.291a.487.487 0 0 1-.481.496A.487.487 0 0 1 0 12.82v-1.291c0-.425.18-.821.501-1.091.967-.821 2.003-1.411 2.479-1.667V7.435a1.368 1.368 0 0 1-.369-.936V4.613c0-1.211.958-2.192 2.129-2.192h.394c1.177 0 2.129.986 2.129 2.192v1.886c0 .356-.136.686-.369.936V8.91a19.344 19.344 0 0 1 1.733-1.037V6.059a1.557 1.557 0 0 1-.462-1.109V2.595C8.165 1.162 9.305 0 10.7 0h.495c1.399 0 2.535 1.167 2.535 2.595V4.95c0 .424-.17.82-.462 1.109v1.593z"></path></svg></div><div class="css-1qckosq">276</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2" d="M23.42 15.403c.855-.864.59-2.612-.892-2.612l-3.903.002c.148-.837.363-2.226.354-2.357-.082-1.242-.863-2.754-.896-2.815-.143-.27-.862-.634-1.586-.478-.935.203-1.03.808-1.027.975 0 0 .04 1.655.044 2.097-.447.996-1.99 3.613-2.457 3.815a.706.706 0 0 0-.37-.105H7.755A.76.76 0 0 0 7 14.69v6.908a.72.72 0 0 0 .71.665h4.43a.718.718 0 0 0 .711-.722v-.23s.165-.012.24.037c.285.183.636.414 1.095.414h6.61c2.47 0 2.205-2.224 1.98-2.527.417-.46.675-1.273.323-1.915.27-.29.746-1.09.32-1.917zM11.986 21.54H7.71v-6.894h4.278v6.894zm10.28-6.196l-.041.17c1.138.329.532 1.659-.284 1.745l-.04.17c1.091.282.57 1.652-.285 1.745l-.04.17c.891.149.675 1.691-.675 1.691l-6.722.003c-.475 0-.907-.549-1.257-.549h-.304v-5.306c.38-.239.846-.549 1.106-.772.49-.424 2.497-3.71 2.497-4.122 0-.412-.045-2.191-.045-2.191s.394-.514 1.272-.14c0 0 .74 1.406.815 2.526 0 0-.333 2.307-.512 3.03h4.66c1.146.002.927 1.659-.146 1.83z"></path></svg></div><div class="css-1qckosq">24</div></div></div></div><div class="css-q4ncy">Distributed and fault-tolerant realtime computation</div><div class="css-1mj0hbk"><div class="css-1drwozb"><div class="css-gbti5j"><label>Stacks</label><span>187</span></div><div class="css-1ahj942"></div><div class="css-1an0suy"><label>Followers</label><span>276</span><div>+ 1</div></div><div class="css-1ahj942"></div><div class="css-gbti5j"><label>Votes</label><span>24</span></div></div></div></div></div><div class="css-1dnnpo5"><div class="css-ubpjqb"><button data-testid="follow" class="css-14pk3xx"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> <!-- -->Follow</button><button data-testid="iUseThis" class="css-1o4togz"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> I use this</button></div></div></div><div class="css-1erkkk4"><div class="css-a55l86"><div class="css-usifiy">PROS OF <!-- -->APACHE STORM</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">10</span></div></div><span class="css-rsz8c">Flexible</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">6</span></div></div><span class="css-rsz8c">Easy setup</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Clojure</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Event Processing</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">Real Time</span></div></li></ul></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">CONS OF <!-- -->APACHE STORM</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"></ul><div class="css-16s8o6z">Be the first to leave a con</div></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">COMPARE</div><div class="css-6t66tf"><div class="css-1bn5mmw"><a href="/stackups/apache-storm-vs-kafka" class="css-1dnwvu3"><div class="css-1v4bhi8"><img src="https://img.stackshare.io/service/1595/thumb_retina_WC8j4Gr3.png" alt="Apache Storm logo" class="css-6wyd29"/><div class="css-19dpmz">VS</div><img src="https://img.stackshare.io/service/1063/thumb_retina_kazUJooF_400x400.jpg" alt="Kafka logo" class="css-6wyd29"/></div><div class="css-v6oua5"><div class="css-16r6zz5"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path d="M13.626 18.015l.511-.81a.405.405 0 0 0-.136-.565.422.422 0 0 0-.576.133l-.51.81c-.927 1.469-2.25 2.312-3.632 2.312H7.416a.412.412 0 1 0 0 .823h1.87c1.68-.007 3.26-.99 4.34-2.703zm9.944-7.882l-2.023-1.99a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.291h-1.939c-1.676 0-3.26.984-4.34 2.697l-.314.498a.405.405 0 0 0 .137.566.42.42 0 0 0 .572-.134l.313-.499c.927-1.468 2.249-2.308 3.632-2.308h1.936l-1.315 1.291a.403.403 0 0 0 0 .579c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.406.406 0 0 0-.003-.58zm-.862.34v-.04l.02.02-.02.02z"></path><path d="M20.954 22.581c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.403.403 0 0 0 0-.58l-2.027-1.986a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.292h-1.877c-1.38 0-2.706-.843-3.632-2.312L13.69 12.71c-1.08-1.716-2.664-2.697-4.34-2.697H7.416a.412.412 0 1 0 0 .823h1.931c1.38 0 2.705.843 3.632 2.309l3.073 4.874c1.08 1.716 2.664 2.7 4.34 2.7h1.877l-1.315 1.291a.4.4 0 0 0 0 .572zm1.754-2.265l.02.02-.02.02v-.04z"></path></g></svg></div><div>Compare Apache Storm vs Kafka</div></div></a></div></div></div></div></div><div class="css-f2odf3"><div class="css-1m02by6"><h2>related Apache Storm posts</h2></div><div class="css-uw1ldh"><div class="css-4gnhqq"><div class="css-xkasvz"><div class="css-atv6j6"><div class="css-1m8tyev"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div></div></div><div class="css-1vf0ygt"><div class="css-utnqcw"><div>Marc Bollinger</div></div><div class="css-ds0hbm">Infra &amp; Data Eng Manager<!-- --> at Thumbtack<!-- --> · <a href="/slpsys/decisions/101175117062127556" class="css-nil"><time>Dec 3, 2018</time> <!-- -->| 5 upvotes · 585.7K views</a></div></div></div></div><div class="css-nil"><div class="css-dg4ww9"><svg xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21"><g fill="none" fill-rule="evenodd"><path fill="#068DFE" fill-rule="nonzero" d="M20.918 19.017l-1.442-4.195a10.3 10.3 0 0 0 1.062-4.537 10.208 10.208 0 0 0-2.949-7.207A10.199 10.199 0 0 0 10.436 0a10.23 10.23 0 0 0-7.428 3.006A10.228 10.228 0 0 0 0 10.437a10.199 10.199 0 0 0 3.077 7.153 10.207 10.207 0 0 0 7.191 2.95h.016a10.3 10.3 0 0 0 4.537-1.063l4.195 1.442a1.485 1.485 0 0 0 1.543-.357c.408-.408.545-.999.358-1.544z"></path><rect width="7" height="1.8" x="6" y="5" fill="#FFF" rx=".9"></rect><rect width="10" height="1.8" x="6" y="9" fill="#FFF" rx=".9"></rect><rect width="7" height="1.8" x="6" y="13" fill="#FFF" rx=".9"></rect></g></svg><div class="css-z9ms26">Shared insights</div><div class="css-6uh2e7">on</div><a href="/nodejs" class="css-1pwtf47"><span title="Node.js" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1011/n1JRsFeB_400x400.png" alt="Node.js" class="css-1rz3855"/></span><span class="css-i6njnm">Node.js</span></a><a href="/ruby" class="css-1pwtf47"><span title="Ruby" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/989/ruby.png" alt="Ruby" class="css-1rz3855"/></span><span class="css-i6njnm">Ruby</span></a><a href="/kafka" class="css-1pwtf47"><span title="Kafka" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1063/kazUJooF_400x400.jpg" alt="Kafka" class="css-1rz3855"/></span><span class="css-i6njnm">Kafka</span></a><a href="/scala" class="css-1pwtf47"><span title="Scala" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1012/scala.png" alt="Scala" class="css-1rz3855"/></span><span class="css-i6njnm">Scala</span></a><a href="/apache-storm" class="css-1pwtf47"><span title="Apache Storm" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1595/WC8j4Gr3.png" alt="Apache Storm" class="css-1rz3855"/></span><span class="css-i6njnm">Apache Storm</span></a><a href="/heron" class="css-1pwtf47"><span title="Heron" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/5164/I_qOkhy5.jpg" alt="Heron" class="css-1rz3855"/></span><span class="css-i6njnm">Heron</span></a><a href="/redis" class="css-1pwtf47"><span title="Redis" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1031/default_cbce472cd134adc6688572f999e9122b9657d4ba.png" alt="Redis" class="css-1rz3855"/></span><span class="css-i6njnm">Redis</span></a><a href="/apache-pulsar" class="css-1pwtf47"><span title="Apache Pulsar" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/5706/wFcLUbwd_400x400.jpg" alt="Apache Pulsar" class="css-1rz3855"/></span><span class="css-i6njnm">Apache Pulsar</span></a><div class="css-6uh2e7">at</div><a itemscope="" itemType="http://schema.org/Organization" itemProp="url" href="/companies/lumosity" target="_blank" class="css-1j2w1cg"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div><div itemProp="name" class="css-1b2ktnx">Lumosity</div></a></div><div class="css-1dp4k20"><div class="css-ztg526"><p>Lumosity is home to the world's largest cognitive training database, a responsibility we take seriously. For most of the company's history, our analysis of user behavior and training data has been powered by an event stream--first a simple <span class="tool">Node.js</span> pub/sub app, then a heavyweight <span class="tool">Ruby</span> app with stronger durability. Both supported decent throughput and latency, but they lacked some major features supported by existing open-source alternatives: replaying existing messages (also lacking in most message queue-based solutions), scaling out many different readers for the same stream, the ability to leverage existing solutions for reading and writing, and possibly most importantly: the ability to hire someone externally who already had expertise.</p> <p>We ultimately migrated to <span class="tool">Kafka</span> in early- to mid-2016, citing both industry trends in companies we'd talked to with similar durability and throughput needs, the extremely strong documentation and community. We pored over Kyle Kingsbury's Jepsen post (<a href="https://aphyr.com/posts/293-jepsen-Kafka" rel="nofollow noopener" target="_blank">https://aphyr.com/posts/293-jepsen-Kafka</a>), as well as Jay Kreps' follow-up (<a href="http://blog.empathybox.com/post/62279088548/a-few-notes-on-kafka-and-jepsen" rel="nofollow noopener" target="_blank">http://blog.empathybox.com/post/62279088548/a-few-notes-on-kafka-and-jepsen</a>), talked at length with Confluent folks and community members, and still wound up running parallel systems for quite a long time, but ultimately, we've been very, very happy. Understanding the internals and proper levers takes some commitment, but it's taken very little maintenance once configured. Since then, the Confluent Platform community has grown and grown; we've gone from doing most development using custom <span class="tool">Scala</span> consumers and producers to being 60/40 Kafka Streams/Connects.</p> <p>We originally looked into <span class="tool">Storm</span> / <span class="tool">Heron</span> , and we'd moved on from <span class="tool">Redis</span> pub/sub. Heron looks great, but we already had a programming model across services that was more akin to consuming a message consumers than required a topology of bolts, etc. Heron also had just come out while we were starting to migrate things, and the community momentum and direction of Kafka felt more substantial than the older Storm. If we were to start the process over again today, we might check out <span class="tool">Pulsar</span> , although the ecosystem is much younger.</p> <p>To find out more, read our 2017 engineering blog post about the migration!</p></div><div class="css-13nf4of"><svg class="css-xd3exe" xmlns="http://www.w3.org/2000/svg" width="11" height="11" viewBox="0 0 11 11"><g fill="#49A8F9" fill-rule="evenodd"><path d="M10.5 0h-4a.5.5 0 0 0 0 1h2.793L4.146 6.146a.5.5 0 1 0 .708.708L10 1.707V4.5a.5.5 0 0 0 1 0v-4a.5.5 0 0 0-.5-.5"></path><path d="M8.5 5a.5.5 0 0 0-.5.5V10H1V3h4.5a.5.5 0 0 0 0-1h-5a.5.5 0 0 0-.5.5v8a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-5a.5.5 0 0 0-.5-.5"></path></g></svg><a href="http://engineering.lumosity.com/data-engineering/2017/11/13/migrating-our-architecture-to-kafka/" title="Brain Surgery at Scale: Migrating Our Architecture to Kafka" class="css-nil">Brain Surgery at Scale: Migrating Our Architecture to Kafka</a></div></div></div><a class="css-1srb7t4">See more</a></div></div></div><div class="css-8qpfeu"><div class="css-kb8or3"><div class="css-1d3wilq"><div class="css-ljm4wn"><div class="css-mwikcm"><a href="/flink" class="css-1jltg37"><img src="https://img.stackshare.io/service/2968/thumb_retina_kQB_QIB_.png" alt="Apache Flink logo" class="css-1489hth"/></a></div><div class="css-8wh4b7"><h2 class="css-pltn6z"><a href="/flink" class="css-1hhgtx3">Apache Flink</a></h2><div class="css-rpzmwi"><div class="css-12alag6"><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path fill-rule="evenodd" d="M20.467 21.867a2.415 2.415 0 0 1-2.318-1.74h-2.192l-.012.008-2.615-4.499h-1.598a2.415 2.415 0 1 1 0-1.35h1.641l-.058-.034 2.63-4.526.022.013h2.172a2.415 2.415 0 1 1 0 1.35h-1.424l-2.23 3.838-.002.003.001.004 2.234 3.843h1.431a2.415 2.415 0 1 1 2.318 3.09zm-.01-10.184a1.27 1.27 0 1 0-1.244-1.515v.492a1.27 1.27 0 0 0 1.244 1.023zm-11.043 2.01a1.268 1.268 0 1 0 0 2.537 1.268 1.268 0 0 0 0-2.537zm11.053 4.491a1.27 1.27 0 0 0-1.244 1.022v.493a1.27 1.27 0 0 0 1.244 1.022 1.27 1.27 0 0 0 0-2.537z"></path></g></svg></div><div class="css-1qckosq">464</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg class="css-1a4uubp" xmlns="http://www.w3.org/2000/svg" width="20" height="17" viewBox="0 0 20 17"><path fill="#A09F9F" fill-rule="evenodd" stroke="#999" stroke-width=".2" d="M14.432 12.715l2.348-2.746a.415.415 0 0 1 .607-.038.47.47 0 0 1 .028.646l-2.64 3.09a.419.419 0 0 1-.3.15h-.014a.414.414 0 0 1-.3-.127l-1.498-1.516a.466.466 0 0 1-.014-.637.413.413 0 0 1 .606-.015l1.177 1.193zm-3.165-.868a3.749 3.749 0 0 0 3.744 3.745 3.749 3.749 0 0 0 3.744-3.745 3.749 3.749 0 0 0-3.744-3.745 3.749 3.749 0 0 0-3.744 3.745zm2.001-4.195a4.523 4.523 0 0 1 1.743-.35 4.55 4.55 0 0 1 4.545 4.545 4.55 4.55 0 0 1-4.545 4.545 4.55 4.55 0 0 1-4.545-4.545 4.53 4.53 0 0 1 1.91-3.688c-.026-.013-.045-.029-.045-.054V5.837c0-.159.08-.308.207-.395a.588.588 0 0 0 .254-.487V2.6c0-.907-.721-1.64-1.602-1.64h-.494c-.886 0-1.603.738-1.603 1.64v2.355c0 .192.095.376.255.487a.47.47 0 0 1 .207.395v2.268a.588.588 0 0 1-.32.526c-.288.145-1.791.921-3.181 2.089a.66.66 0 0 0-.235.511v1.612a.456.456 0 0 1-.458.473.47.47 0 0 1-.466-.478v-1.612c0-.487.207-.94.575-1.249.153-.129.307-.253.461-.373V7.21a.5.5 0 0 1 .214-.41.352.352 0 0 0 .156-.296V4.618c0-.666-.525-1.206-1.172-1.206h-.394c-.646 0-1.166.54-1.166 1.201v1.886c0 .121.058.231.155.296.136.09.214.245.214.41v1.817c0 .225-.121.42-.316.52a13.83 13.83 0 0 0-2.513 1.662.421.421 0 0 0-.146.325v1.291a.487.487 0 0 1-.481.496A.487.487 0 0 1 0 12.82v-1.291c0-.425.18-.821.501-1.091.967-.821 2.003-1.411 2.479-1.667V7.435a1.368 1.368 0 0 1-.369-.936V4.613c0-1.211.958-2.192 2.129-2.192h.394c1.177 0 2.129.986 2.129 2.192v1.886c0 .356-.136.686-.369.936V8.91a19.344 19.344 0 0 1 1.733-1.037V6.059a1.557 1.557 0 0 1-.462-1.109V2.595C8.165 1.162 9.305 0 10.7 0h.495c1.399 0 2.535 1.167 2.535 2.595V4.95c0 .424-.17.82-.462 1.109v1.593z"></path></svg></div><div class="css-1qckosq">776</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2" d="M23.42 15.403c.855-.864.59-2.612-.892-2.612l-3.903.002c.148-.837.363-2.226.354-2.357-.082-1.242-.863-2.754-.896-2.815-.143-.27-.862-.634-1.586-.478-.935.203-1.03.808-1.027.975 0 0 .04 1.655.044 2.097-.447.996-1.99 3.613-2.457 3.815a.706.706 0 0 0-.37-.105H7.755A.76.76 0 0 0 7 14.69v6.908a.72.72 0 0 0 .71.665h4.43a.718.718 0 0 0 .711-.722v-.23s.165-.012.24.037c.285.183.636.414 1.095.414h6.61c2.47 0 2.205-2.224 1.98-2.527.417-.46.675-1.273.323-1.915.27-.29.746-1.09.32-1.917zM11.986 21.54H7.71v-6.894h4.278v6.894zm10.28-6.196l-.041.17c1.138.329.532 1.659-.284 1.745l-.04.17c1.091.282.57 1.652-.285 1.745l-.04.17c.891.149.675 1.691-.675 1.691l-6.722.003c-.475 0-.907-.549-1.257-.549h-.304v-5.306c.38-.239.846-.549 1.106-.772.49-.424 2.497-3.71 2.497-4.122 0-.412-.045-2.191-.045-2.191s.394-.514 1.272-.14c0 0 .74 1.406.815 2.526 0 0-.333 2.307-.512 3.03h4.66c1.146.002.927 1.659-.146 1.83z"></path></svg></div><div class="css-1qckosq">38</div></div></div></div><div class="css-q4ncy">Fast and reliable large-scale data processing engine</div><div class="css-1mj0hbk"><div class="css-1drwozb"><div class="css-gbti5j"><label>Stacks</label><span>464</span></div><div class="css-1ahj942"></div><div class="css-1an0suy"><label>Followers</label><span>776</span><div>+ 1</div></div><div class="css-1ahj942"></div><div class="css-gbti5j"><label>Votes</label><span>38</span></div></div></div></div></div><div class="css-1dnnpo5"><div class="css-ubpjqb"><button data-testid="follow" class="css-14pk3xx"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> <!-- -->Follow</button><button data-testid="iUseThis" class="css-1o4togz"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> I use this</button></div></div></div><div class="css-1erkkk4"><div class="css-a55l86"><div class="css-usifiy">PROS OF <!-- -->APACHE FLINK</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">16</span></div></div><span class="css-rsz8c">Unified batch and stream processing</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">8</span></div></div><span class="css-rsz8c">Easy to use streaming apis</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">8</span></div></div><span class="css-rsz8c">Out-of-the box connector to kinesis,s3,hdfs</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">4</span></div></div><span class="css-rsz8c">Open Source</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">Low latency</span></div></li></ul></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">CONS OF <!-- -->APACHE FLINK</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"></ul><div class="css-16s8o6z">Be the first to leave a con</div></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">COMPARE</div><div class="css-6t66tf"><div class="css-1bn5mmw"><a href="/stackups/flink-vs-kafka" class="css-1dnwvu3"><div class="css-1v4bhi8"><img src="https://img.stackshare.io/service/2968/thumb_retina_kQB_QIB_.png" alt="Apache Flink logo" class="css-6wyd29"/><div class="css-19dpmz">VS</div><img src="https://img.stackshare.io/service/1063/thumb_retina_kazUJooF_400x400.jpg" alt="Kafka logo" class="css-6wyd29"/></div><div class="css-v6oua5"><div class="css-16r6zz5"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path d="M13.626 18.015l.511-.81a.405.405 0 0 0-.136-.565.422.422 0 0 0-.576.133l-.51.81c-.927 1.469-2.25 2.312-3.632 2.312H7.416a.412.412 0 1 0 0 .823h1.87c1.68-.007 3.26-.99 4.34-2.703zm9.944-7.882l-2.023-1.99a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.291h-1.939c-1.676 0-3.26.984-4.34 2.697l-.314.498a.405.405 0 0 0 .137.566.42.42 0 0 0 .572-.134l.313-.499c.927-1.468 2.249-2.308 3.632-2.308h1.936l-1.315 1.291a.403.403 0 0 0 0 .579c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.406.406 0 0 0-.003-.58zm-.862.34v-.04l.02.02-.02.02z"></path><path d="M20.954 22.581c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.403.403 0 0 0 0-.58l-2.027-1.986a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.292h-1.877c-1.38 0-2.706-.843-3.632-2.312L13.69 12.71c-1.08-1.716-2.664-2.697-4.34-2.697H7.416a.412.412 0 1 0 0 .823h1.931c1.38 0 2.705.843 3.632 2.309l3.073 4.874c1.08 1.716 2.664 2.7 4.34 2.7h1.877l-1.315 1.291a.4.4 0 0 0 0 .572zm1.754-2.265l.02.02-.02.02v-.04z"></path></g></svg></div><div>Compare Apache Flink vs Kafka</div></div></a></div></div></div></div></div><div class="css-f2odf3"><div class="css-1m02by6"><h2>related Apache Flink posts</h2></div><div class="css-uw1ldh"><div class="css-4gnhqq"><div class="css-xkasvz"><div class="css-atv6j6"><div class="css-1m8tyev"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div></div></div><div class="css-1vf0ygt"><div class="css-utnqcw"><div>Surabhi Bhawsar</div></div><div class="css-ds0hbm">Technical Architect<!-- --> at Pepcus<!-- --> · <a href="/sbhawsar/decisions/102686150321221944" class="css-nil"><time>Aug 27, 2019</time> <!-- -->| 7 upvotes · 621K views</a></div></div></div></div><div class="css-nil"><div class="css-dg4ww9"><svg xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21"><g fill="none" fill-rule="evenodd"><path fill="#068DFE" fill-rule="nonzero" d="M20.918 19.017l-1.442-4.195a10.3 10.3 0 0 0 1.062-4.537 10.208 10.208 0 0 0-2.949-7.207A10.199 10.199 0 0 0 10.436 0a10.23 10.23 0 0 0-7.428 3.006A10.228 10.228 0 0 0 0 10.437a10.199 10.199 0 0 0 3.077 7.153 10.207 10.207 0 0 0 7.191 2.95h.016a10.3 10.3 0 0 0 4.537-1.063l4.195 1.442a1.485 1.485 0 0 0 1.543-.357c.408-.408.545-.999.358-1.544z"></path><rect width="7" height="1.8" x="6" y="5" fill="#FFF" rx=".9"></rect><rect width="10" height="1.8" x="6" y="9" fill="#FFF" rx=".9"></rect><rect width="7" height="1.8" x="6" y="13" fill="#FFF" rx=".9"></rect></g></svg><div class="css-z9ms26">Shared insights</div><div class="css-6uh2e7">on</div><a href="/kafka" class="css-1pwtf47"><span title="Kafka" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1063/kazUJooF_400x400.jpg" alt="Kafka" class="css-1rz3855"/></span><span class="css-i6njnm">Kafka</span></a><a href="/flink" class="css-1pwtf47"><span title="Apache Flink" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/2968/kQB_QIB_.png" alt="Apache Flink" class="css-1rz3855"/></span><span class="css-i6njnm">Apache Flink</span></a></div><div class="css-1dp4k20"><div class="css-ztg526"><p>I need to build the Alert &amp; Notification framework with the use of a scheduled program. We will analyze the events from the database table and filter events that are falling under a day timespan and send these event messages over email. Currently, we are using <span class="tool">Kafka</span> Pub/Sub for messaging. The customer wants us to move on Apache Flink, I am trying to understand how <span class="tool">Apache Flink</span> could be fit better for us. </p></div></div></div><a class="css-1srb7t4">See more</a></div><div class="css-uw1ldh"><div class="css-4gnhqq"><div class="css-xkasvz"><div class="css-atv6j6"><div class="css-1m8tyev"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div></div></div><div class="css-1vf0ygt"><div class="css-utnqcw"><div>Balaji Kasala</div></div><div class="css-ds0hbm"><a href="/balaji_kasala2955/decisions/104392444617273089" class="css-nil"><time>Jun 23, 2020</time> <!-- -->| 6 upvotes · 293.9K views</a></div></div></div></div><div class="css-nil"><div class="css-dg4ww9"><svg xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21"><g fill="none" fill-rule="evenodd"><path fill="#068DFE" fill-rule="nonzero" d="M20.918 19.017l-1.442-4.195a10.3 10.3 0 0 0 1.062-4.537 10.208 10.208 0 0 0-2.949-7.207A10.199 10.199 0 0 0 10.436 0a10.23 10.23 0 0 0-7.428 3.006A10.228 10.228 0 0 0 0 10.437a10.199 10.199 0 0 0 3.077 7.153 10.207 10.207 0 0 0 7.191 2.95h.016a10.3 10.3 0 0 0 4.537-1.063l4.195 1.442a1.485 1.485 0 0 0 1.543-.357c.408-.408.545-.999.358-1.544z"></path><rect width="7" height="1.8" x="6" y="5" fill="#FFF" rx=".9"></rect><rect width="10" height="1.8" x="6" y="9" fill="#FFF" rx=".9"></rect><rect width="7" height="1.8" x="6" y="13" fill="#FFF" rx=".9"></rect></g></svg><div class="css-z9ms26">Shared insights</div><div class="css-6uh2e7">on</div><a href="/flink" class="css-1pwtf47"><span title="Apache Flink" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/2968/kQB_QIB_.png" alt="Apache Flink" class="css-1rz3855"/></span><span class="css-i6njnm">Apache Flink</span></a><a href="/kafka" class="css-1pwtf47"><span title="Kafka" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1063/kazUJooF_400x400.jpg" alt="Kafka" class="css-1rz3855"/></span><span class="css-i6njnm">Kafka</span></a><a href="/amazon-emr" class="css-1pwtf47"><span title="Amazon EMR" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/385/amazon-emr.png" alt="Amazon EMR" class="css-1rz3855"/></span><span class="css-i6njnm">Amazon EMR</span></a><a href="/apache-beam" class="css-1pwtf47"><span title="Apache Beam" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/5286/FILKflMC_400x400.png" alt="Apache Beam" class="css-1rz3855"/></span><span class="css-i6njnm">Apache Beam</span></a></div><div class="css-1dp4k20"><div class="css-ztg526"><p>I have to build a data processing application with an <span class="tool">Apache Beam</span> stack and <span class="tool">Apache Flink</span> runner on an <span class="tool">Amazon EMR</span> cluster. I saw some instability with the process and EMR clusters that keep going down. Here, the <span class="tool">Apache Beam</span> application gets inputs from <span class="tool">Kafka</span> and sends the accumulative data streams to another Kafka topic. Any advice on how to make the process more stable?</p></div></div></div><a class="css-1srb7t4">See more</a></div></div></div><div class="css-8qpfeu"><div class="css-kb8or3"><div class="css-1d3wilq"><div class="css-ljm4wn"><div class="css-mwikcm"><a href="/redis" class="css-1jltg37"><img src="https://img.stackshare.io/service/1031/thumb_retina_cbce472cd134adc6688572f999e9122b9657d4ba.png" alt="Redis logo" class="css-1489hth"/></a></div><div class="css-8wh4b7"><h2 class="css-pltn6z"><a href="/redis" class="css-1hhgtx3">Redis</a></h2><div class="css-rpzmwi"><div class="css-12alag6"><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path fill-rule="evenodd" d="M20.467 21.867a2.415 2.415 0 0 1-2.318-1.74h-2.192l-.012.008-2.615-4.499h-1.598a2.415 2.415 0 1 1 0-1.35h1.641l-.058-.034 2.63-4.526.022.013h2.172a2.415 2.415 0 1 1 0 1.35h-1.424l-2.23 3.838-.002.003.001.004 2.234 3.843h1.431a2.415 2.415 0 1 1 2.318 3.09zm-.01-10.184a1.27 1.27 0 1 0-1.244-1.515v.492a1.27 1.27 0 0 0 1.244 1.023zm-11.043 2.01a1.268 1.268 0 1 0 0 2.537 1.268 1.268 0 0 0 0-2.537zm11.053 4.491a1.27 1.27 0 0 0-1.244 1.022v.493a1.27 1.27 0 0 0 1.244 1.022 1.27 1.27 0 0 0 0-2.537z"></path></g></svg></div><div class="css-1qckosq">52.3K</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg class="css-1a4uubp" xmlns="http://www.w3.org/2000/svg" width="20" height="17" viewBox="0 0 20 17"><path fill="#A09F9F" fill-rule="evenodd" stroke="#999" stroke-width=".2" d="M14.432 12.715l2.348-2.746a.415.415 0 0 1 .607-.038.47.47 0 0 1 .028.646l-2.64 3.09a.419.419 0 0 1-.3.15h-.014a.414.414 0 0 1-.3-.127l-1.498-1.516a.466.466 0 0 1-.014-.637.413.413 0 0 1 .606-.015l1.177 1.193zm-3.165-.868a3.749 3.749 0 0 0 3.744 3.745 3.749 3.749 0 0 0 3.744-3.745 3.749 3.749 0 0 0-3.744-3.745 3.749 3.749 0 0 0-3.744 3.745zm2.001-4.195a4.523 4.523 0 0 1 1.743-.35 4.55 4.55 0 0 1 4.545 4.545 4.55 4.55 0 0 1-4.545 4.545 4.55 4.55 0 0 1-4.545-4.545 4.53 4.53 0 0 1 1.91-3.688c-.026-.013-.045-.029-.045-.054V5.837c0-.159.08-.308.207-.395a.588.588 0 0 0 .254-.487V2.6c0-.907-.721-1.64-1.602-1.64h-.494c-.886 0-1.603.738-1.603 1.64v2.355c0 .192.095.376.255.487a.47.47 0 0 1 .207.395v2.268a.588.588 0 0 1-.32.526c-.288.145-1.791.921-3.181 2.089a.66.66 0 0 0-.235.511v1.612a.456.456 0 0 1-.458.473.47.47 0 0 1-.466-.478v-1.612c0-.487.207-.94.575-1.249.153-.129.307-.253.461-.373V7.21a.5.5 0 0 1 .214-.41.352.352 0 0 0 .156-.296V4.618c0-.666-.525-1.206-1.172-1.206h-.394c-.646 0-1.166.54-1.166 1.201v1.886c0 .121.058.231.155.296.136.09.214.245.214.41v1.817c0 .225-.121.42-.316.52a13.83 13.83 0 0 0-2.513 1.662.421.421 0 0 0-.146.325v1.291a.487.487 0 0 1-.481.496A.487.487 0 0 1 0 12.82v-1.291c0-.425.18-.821.501-1.091.967-.821 2.003-1.411 2.479-1.667V7.435a1.368 1.368 0 0 1-.369-.936V4.613c0-1.211.958-2.192 2.129-2.192h.394c1.177 0 2.129.986 2.129 2.192v1.886c0 .356-.136.686-.369.936V8.91a19.344 19.344 0 0 1 1.733-1.037V6.059a1.557 1.557 0 0 1-.462-1.109V2.595C8.165 1.162 9.305 0 10.7 0h.495c1.399 0 2.535 1.167 2.535 2.595V4.95c0 .424-.17.82-.462 1.109v1.593z"></path></svg></div><div class="css-1qckosq">39.7K</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2" d="M23.42 15.403c.855-.864.59-2.612-.892-2.612l-3.903.002c.148-.837.363-2.226.354-2.357-.082-1.242-.863-2.754-.896-2.815-.143-.27-.862-.634-1.586-.478-.935.203-1.03.808-1.027.975 0 0 .04 1.655.044 2.097-.447.996-1.99 3.613-2.457 3.815a.706.706 0 0 0-.37-.105H7.755A.76.76 0 0 0 7 14.69v6.908a.72.72 0 0 0 .71.665h4.43a.718.718 0 0 0 .711-.722v-.23s.165-.012.24.037c.285.183.636.414 1.095.414h6.61c2.47 0 2.205-2.224 1.98-2.527.417-.46.675-1.273.323-1.915.27-.29.746-1.09.32-1.917zM11.986 21.54H7.71v-6.894h4.278v6.894zm10.28-6.196l-.041.17c1.138.329.532 1.659-.284 1.745l-.04.17c1.091.282.57 1.652-.285 1.745l-.04.17c.891.149.675 1.691-.675 1.691l-6.722.003c-.475 0-.907-.549-1.257-.549h-.304v-5.306c.38-.239.846-.549 1.106-.772.49-.424 2.497-3.71 2.497-4.122 0-.412-.045-2.191-.045-2.191s.394-.514 1.272-.14c0 0 .74 1.406.815 2.526 0 0-.333 2.307-.512 3.03h4.66c1.146.002.927 1.659-.146 1.83z"></path></svg></div><div class="css-1qckosq">3.9K</div></div></div></div><div class="css-q4ncy">Open source (BSD licensed), in-memory data structure store</div><div class="css-1mj0hbk"><div class="css-1drwozb"><div class="css-gbti5j"><label>Stacks</label><span>52.3K</span></div><div class="css-1ahj942"></div><div class="css-1an0suy"><label>Followers</label><span>39.7K</span><div>+ 1</div></div><div class="css-1ahj942"></div><div class="css-gbti5j"><label>Votes</label><span>3.9K</span></div></div></div></div></div><div class="css-1dnnpo5"><div class="css-ubpjqb"><button data-testid="follow" class="css-14pk3xx"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> <!-- -->Follow</button><button data-testid="iUseThis" class="css-1o4togz"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> I use this</button></div><div class="css-gpa5xw"><div class="css-1ob9em9"><button class="css-1mpii3w">Deploy Redis With One Click On Linode</button></div></div></div></div><div class="css-1erkkk4"><div class="css-a55l86"><div class="css-usifiy">PROS OF <!-- -->REDIS</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">881</span></div></div><span class="css-rsz8c">Performance</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">539</span></div></div><span class="css-rsz8c">Super fast</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">510</span></div></div><span class="css-rsz8c">Ease of use </span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">441</span></div></div><span class="css-rsz8c">In-memory cache</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">321</span></div></div><span class="css-rsz8c">Advanced key-value cache</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">190</span></div></div><span class="css-rsz8c">Open source </span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">179</span></div></div><span class="css-rsz8c">Easy to deploy</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">163</span></div></div><span class="css-rsz8c">Stable</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">152</span></div></div><span class="css-rsz8c">Free</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">120</span></div></div><span class="css-rsz8c">Fast</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">40</span></div></div><span class="css-rsz8c">High-Performance</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">39</span></div></div><span class="css-rsz8c">High Availability</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">34</span></div></div><span class="css-rsz8c">Data Structures</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">31</span></div></div><span class="css-rsz8c">Very Scalable</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">23</span></div></div><span class="css-rsz8c">Replication</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">20</span></div></div><span class="css-rsz8c">Pub/Sub</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">20</span></div></div><span class="css-rsz8c">Great community </span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">17</span></div></div><span class="css-rsz8c">&quot;NoSQL&quot; key-value data store</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">14</span></div></div><span class="css-rsz8c">Hashes</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">12</span></div></div><span class="css-rsz8c">Sets</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">10</span></div></div><span class="css-rsz8c">Sorted Sets</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">9</span></div></div><span class="css-rsz8c">Lists</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">8</span></div></div><span class="css-rsz8c">BSD licensed</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">8</span></div></div><span class="css-rsz8c">NoSQL</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">7</span></div></div><span class="css-rsz8c">Integrates super easy with Sidekiq for Rails background</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">7</span></div></div><span class="css-rsz8c">Async replication</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">7</span></div></div><span class="css-rsz8c">Bitmaps</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">6</span></div></div><span class="css-rsz8c">Keys with a limited time-to-live</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">6</span></div></div><span class="css-rsz8c">Open Source</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">5</span></div></div><span class="css-rsz8c">Strings</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">5</span></div></div><span class="css-rsz8c">Lua scripting</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">4</span></div></div><span class="css-rsz8c">Hyperloglogs</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">4</span></div></div><span class="css-rsz8c">Awesomeness for Free!</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Transactions</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Runs server side LUA</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">outstanding performance</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Networked</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">LRU eviction of keys</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Written in ANSI C</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Feature Rich</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">Performance &amp; ease of use</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">Data structure server</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Simple</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Channels concept</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Scalable</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Temporarily kept on disk</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Dont save data if no subscribers are found</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Automatic failover</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Easy to use</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Existing Laravel Integration</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Object [key/value] size each 500 MB</span></div></li></ul></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">CONS OF <!-- -->REDIS</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">14</span></div></div><span class="css-rsz8c">Cannot query objects directly</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">No secondary indexes for non-numeric data types</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">No WAL</span></div></li></ul></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">COMPARE</div><div class="css-6t66tf"><div class="css-1bn5mmw"><a href="/stackups/redis-vs-kafka" class="css-1dnwvu3"><div class="css-1v4bhi8"><img src="https://img.stackshare.io/service/1031/thumb_retina_cbce472cd134adc6688572f999e9122b9657d4ba.png" alt="Redis logo" class="css-6wyd29"/><div class="css-19dpmz">VS</div><img src="https://img.stackshare.io/service/1063/thumb_retina_kazUJooF_400x400.jpg" alt="Kafka logo" class="css-6wyd29"/></div><div class="css-v6oua5"><div class="css-16r6zz5"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path d="M13.626 18.015l.511-.81a.405.405 0 0 0-.136-.565.422.422 0 0 0-.576.133l-.51.81c-.927 1.469-2.25 2.312-3.632 2.312H7.416a.412.412 0 1 0 0 .823h1.87c1.68-.007 3.26-.99 4.34-2.703zm9.944-7.882l-2.023-1.99a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.291h-1.939c-1.676 0-3.26.984-4.34 2.697l-.314.498a.405.405 0 0 0 .137.566.42.42 0 0 0 .572-.134l.313-.499c.927-1.468 2.249-2.308 3.632-2.308h1.936l-1.315 1.291a.403.403 0 0 0 0 .579c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.406.406 0 0 0-.003-.58zm-.862.34v-.04l.02.02-.02.02z"></path><path d="M20.954 22.581c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.403.403 0 0 0 0-.58l-2.027-1.986a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.292h-1.877c-1.38 0-2.706-.843-3.632-2.312L13.69 12.71c-1.08-1.716-2.664-2.697-4.34-2.697H7.416a.412.412 0 1 0 0 .823h1.931c1.38 0 2.705.843 3.632 2.309l3.073 4.874c1.08 1.716 2.664 2.7 4.34 2.7h1.877l-1.315 1.291a.4.4 0 0 0 0 .572zm1.754-2.265l.02.02-.02.02v-.04z"></path></g></svg></div><div>Compare Redis vs Kafka</div></div></a></div></div></div></div></div><div class="css-f2odf3"><div class="css-1m02by6"><h2>related Redis posts</h2></div><div class="css-uw1ldh"><div class="css-4gnhqq"><div class="css-xkasvz"><div class="css-atv6j6"><div class="css-1m8tyev"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div></div></div><div class="css-1vf0ygt"><div class="css-utnqcw"><div>Robert Zuber</div></div><div class="css-ds0hbm">CTO<!-- --> at CircleCI<!-- --> · <a href="/z00b/decisions/102493656005301501" class="css-nil"><time>Jul 24, 2019</time> <!-- -->| 24 upvotes · 2.2M views</a></div></div></div></div><div class="css-nil"><div class="css-dg4ww9"><svg xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21"><g fill="none" fill-rule="evenodd"><path fill="#068DFE" fill-rule="nonzero" d="M20.918 19.017l-1.442-4.195a10.3 10.3 0 0 0 1.062-4.537 10.208 10.208 0 0 0-2.949-7.207A10.199 10.199 0 0 0 10.436 0a10.23 10.23 0 0 0-7.428 3.006A10.228 10.228 0 0 0 0 10.437a10.199 10.199 0 0 0 3.077 7.153 10.207 10.207 0 0 0 7.191 2.95h.016a10.3 10.3 0 0 0 4.537-1.063l4.195 1.442a1.485 1.485 0 0 0 1.543-.357c.408-.408.545-.999.358-1.544z"></path><rect width="7" height="1.8" x="6" y="5" fill="#FFF" rx=".9"></rect><rect width="10" height="1.8" x="6" y="9" fill="#FFF" rx=".9"></rect><rect width="7" height="1.8" x="6" y="13" fill="#FFF" rx=".9"></rect></g></svg><div class="css-z9ms26">Shared insights</div><div class="css-6uh2e7">on</div><a href="/mongodb" class="css-1pwtf47"><span title="MongoDB" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1030/leaf-360x360.png" alt="MongoDB" class="css-1rz3855"/></span><span class="css-i6njnm">MongoDB</span></a><a href="/postgresql" class="css-1pwtf47"><span title="PostgreSQL" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1028/ASOhU5xJ.png" alt="PostgreSQL" class="css-1rz3855"/></span><span class="css-i6njnm">PostgreSQL</span></a><a href="/redis" class="css-1pwtf47"><span title="Redis" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1031/default_cbce472cd134adc6688572f999e9122b9657d4ba.png" alt="Redis" class="css-1rz3855"/></span><span class="css-i6njnm">Redis</span></a><a href="/github" class="css-1pwtf47"><span title="GitHub" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/27/default_869c34d29acc794d60ecdd5d2b5bfc042a80a4ec.jpg" alt="GitHub" class="css-1rz3855"/></span><span class="css-i6njnm">GitHub</span></a><a href="/amazon-s3" class="css-1pwtf47"><span title="Amazon S3" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/25/amazon-s3.png" alt="Amazon S3" class="css-1rz3855"/></span><span class="css-i6njnm">Amazon S3</span></a><div class="css-6uh2e7">at</div><a itemscope="" itemType="http://schema.org/Organization" itemProp="url" href="/companies/circleci" target="_blank" class="css-1j2w1cg"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div><div itemProp="name" class="css-1b2ktnx">CircleCI</div></a></div><div class="css-1dp4k20"><div class="css-ztg526"><p>We use <span class="tool">MongoDB</span> as our primary #datastore. Mongo's approach to replica sets enables some fantastic patterns for operations like maintenance, backups, and #ETL.</p> <p>As we pull <span class="topic">#microservices</span> from our #monolith, we are taking the opportunity to build them with their own datastores using <span class="tool">PostgreSQL</span>. We also use <span class="tool">Redis</span> to cache data we’d never store permanently, and to rate-limit our requests to partners’ APIs (like <span class="tool">GitHub</span>).</p> <p>When we’re dealing with large blobs of immutable data (logs, artifacts, and test results), we store them in <span class="tool">Amazon S3</span>. We handle any side-effects of S3’s eventual consistency model within our own code. This ensures that we deal with user requests correctly while writes are in process.</p></div><div class="css-13nf4of"><svg class="css-xd3exe" xmlns="http://www.w3.org/2000/svg" width="11" height="11" viewBox="0 0 11 11"><g fill="#49A8F9" fill-rule="evenodd"><path d="M10.5 0h-4a.5.5 0 0 0 0 1h2.793L4.146 6.146a.5.5 0 1 0 .708.708L10 1.707V4.5a.5.5 0 0 0 1 0v-4a.5.5 0 0 0-.5-.5"></path><path d="M8.5 5a.5.5 0 0 0-.5.5V10H1V3h4.5a.5.5 0 0 0 0-1h-5a.5.5 0 0 0-.5.5v8a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-5a.5.5 0 0 0-.5-.5"></path></g></svg><a href="https://stackshare.io/circleci/update-how-circleci-processes-over-30-million-builds-per-month" title="Update: How CircleCI Processes Over 30 Million Builds Per Month - CircleCI Tech Stack" class="css-nil">Update: How CircleCI Processes Over 30 Million Builds Per Month - CircleCI Tech Stack</a></div></div></div><a class="css-1srb7t4">See more</a></div><div class="css-uw1ldh"><div class="css-4gnhqq"><div class="css-xkasvz"><div class="css-atv6j6"><div class="css-1m8tyev"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div></div></div><div class="css-1vf0ygt"><div class="css-utnqcw"><div>Bryam Rodriguez</div></div><div class="css-ds0hbm"><a href="/bryam8694/decisions/103607666193472806" class="css-nil"><time>Feb 5, 2020</time> <!-- -->| 21 upvotes · 1.9M views</a></div></div></div></div><div class="css-nil"><div class="css-dg4ww9"><svg xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21"><g fill="none" fill-rule="evenodd"><path fill="#068DFE" fill-rule="nonzero" d="M20.918 19.017l-1.442-4.195a10.3 10.3 0 0 0 1.062-4.537 10.208 10.208 0 0 0-2.949-7.207A10.199 10.199 0 0 0 10.436 0a10.23 10.23 0 0 0-7.428 3.006A10.228 10.228 0 0 0 0 10.437a10.199 10.199 0 0 0 3.077 7.153 10.207 10.207 0 0 0 7.191 2.95h.016a10.3 10.3 0 0 0 4.537-1.063l4.195 1.442a1.485 1.485 0 0 0 1.543-.357c.408-.408.545-.999.358-1.544z"></path><rect width="7" height="1.8" x="6" y="5" fill="#FFF" rx=".9"></rect><rect width="10" height="1.8" x="6" y="9" fill="#FFF" rx=".9"></rect><rect width="7" height="1.8" x="6" y="13" fill="#FFF" rx=".9"></rect></g></svg><div class="css-z9ms26">Shared insights</div><div class="css-6uh2e7">on</div><a href="/ruby" class="css-1pwtf47"><span title="Ruby" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/989/ruby.png" alt="Ruby" class="css-1rz3855"/></span><span class="css-i6njnm">Ruby</span></a><a href="/rails" class="css-1pwtf47"><span title="Rails" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/990/x57_Lorv.png" alt="Rails" class="css-1rz3855"/></span><span class="css-i6njnm">Rails</span></a><a href="/react" class="css-1pwtf47"><span title="React" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1020/OYIaJ1KK.png" alt="React" class="css-1rz3855"/></span><span class="css-i6njnm">React</span></a><a href="/reduxjs" class="css-1pwtf47"><span title="Redux" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/4074/13142323.png" alt="Redux" class="css-1rz3855"/></span><span class="css-i6njnm">Redux</span></a><a href="/create-react-app" class="css-1pwtf47"><span title="Create React App" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/5537/oi64YzXY.jpg" alt="Create React App" class="css-1rz3855"/></span><span class="css-i6njnm">Create React App</span></a><a href="/jest" class="css-1pwtf47"><span title="Jest" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/830/jest.png" alt="Jest" class="css-1rz3855"/></span><span class="css-i6njnm">Jest</span></a><a href="/react-testing-library" class="css-1pwtf47"><span title="react-testing-library" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/9787/49996085.png" alt="react-testing-library" class="css-1rz3855"/></span><span class="css-i6njnm">react-testing-library</span></a><a href="/rspec" class="css-1pwtf47"><span title="RSpec" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/2539/logo.png" alt="RSpec" class="css-1rz3855"/></span><span class="css-i6njnm">RSpec</span></a><a href="/postgresql" class="css-1pwtf47"><span title="PostgreSQL" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1028/ASOhU5xJ.png" alt="PostgreSQL" class="css-1rz3855"/></span><span class="css-i6njnm">PostgreSQL</span></a><a href="/mongodb" class="css-1pwtf47"><span title="MongoDB" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1030/leaf-360x360.png" alt="MongoDB" class="css-1rz3855"/></span><span class="css-i6njnm">MongoDB</span></a><a href="/redis" class="css-1pwtf47"><span title="Redis" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1031/default_cbce472cd134adc6688572f999e9122b9657d4ba.png" alt="Redis" class="css-1rz3855"/></span><span class="css-i6njnm">Redis</span></a><a href="/react-native" class="css-1pwtf47"><span title="React Native" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/2699/KoK6gHzp.jpg" alt="React Native" class="css-1rz3855"/></span><span class="css-i6njnm">React Native</span></a><a href="/next-js" class="css-1pwtf47"><span title="Next.js" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/5936/nextjs.png" alt="Next.js" class="css-1rz3855"/></span><span class="css-i6njnm">Next.js</span></a><a href="/python" class="css-1pwtf47"><span title="Python" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/993/pUBY5pVj.png" alt="Python" class="css-1rz3855"/></span><span class="css-i6njnm">Python</span></a><a href="/bit" class="css-1pwtf47"><span title="Bit" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/4616/QP1hRAU5_400x400.jpg" alt="Bit" class="css-1rz3855"/></span><span class="css-i6njnm">Bit</span></a><a href="/javascript" class="css-1pwtf47"><span title="JavaScript" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1209/javascript.jpeg" alt="JavaScript" class="css-1rz3855"/></span><span class="css-i6njnm">JavaScript</span></a><div class="css-6uh2e7">at</div><a itemscope="" itemType="http://schema.org/Organization" itemProp="url" href="/companies/runahr" target="_blank" class="css-1j2w1cg"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div><div itemProp="name" class="css-1b2ktnx">RunaHR</div></a></div><div class="css-1dp4k20"><div class="css-ztg526"><p>I'm working as one of the engineering leads in RunaHR. As our platform is a Saas, we thought It'd be good to have an API (We chose <span class="tool">Ruby</span> and <span class="tool">Rails</span> for this) and a SPA (built with <span class="tool">React</span> and <span class="tool">Redux</span> ) connected. We started the SPA with <span class="tool">Create React App</span> since It's pretty easy to start.</p> <p>We use <span class="tool">Jest</span> as the testing framework and <span class="tool">react-testing-library</span> to test React components. In Rails we make tests using <span class="tool">RSpec</span>.</p> <p>Our main database is <span class="tool">PostgreSQL</span>, but we also use <span class="tool">MongoDB</span> to store some type of data. We started to use <span class="tool">Redis</span>  for cache and other time sensitive operations. </p> <p>We have a couple of extra projects: One is an Employee app built with <span class="tool">React Native</span> and the other is an internal back office dashboard built with <span class="tool">Next.js</span> for the client and <span class="tool">Python</span> in the backend side.</p> <p>Since we have different frontend apps we have found useful to have <span class="tool">Bit</span> to document visual components and utils in <span class="tool">JavaScript</span>.</p></div></div></div><a class="css-1srb7t4">See more</a></div></div></div><div class="css-13u3lpy"><button class="css-1iqua1m">Sign up to see more</button></div></div></div></main><div class="css-69zjs9"><div class="css-8a04gk"><div class="css-1m38k02"><h2 class="css-162qu2y">Similar Tools</h2><a href="/activemq/alternatives" title="ActiveMQ Alternatives" class="css-p797gu">ActiveMQ Alternatives</a><a href="/rabbitmq/alternatives" title="RabbitMQ Alternatives" class="css-p797gu">RabbitMQ Alternatives</a><a href="/amazon-kinesis/alternatives" title="Amazon Kinesis Alternatives" class="css-p797gu">Amazon Kinesis Alternatives</a><a href="/spark/alternatives" title="Apache Spark Alternatives" class="css-p797gu">Apache Spark Alternatives</a><a href="/akka/alternatives" title="Akka Alternatives" class="css-p797gu">Akka Alternatives</a></div><div class="css-1m38k02"><h2 class="css-162qu2y">New Tools</h2><a href="/rethinkdb/alternatives" title="RethinkDB Alternatives" class="css-p797gu">RethinkDB Alternatives</a><a href="/amazon-sqs/alternatives" title="Amazon SQS Alternatives" class="css-p797gu">Amazon SQS Alternatives</a><a href="/amazon-emr/alternatives" title="Amazon EMR Alternatives" class="css-p797gu">Amazon EMR Alternatives</a><a href="/amazon-redshift/alternatives" title="Amazon Redshift Alternatives" class="css-p797gu">Amazon Redshift Alternatives</a><a href="/redisgreen/alternatives" title="RedisGreen Alternatives" class="css-p797gu">RedisGreen Alternatives</a></div><div class="css-1m38k02"><h2 class="css-162qu2y">Top Tools</h2><a href="/mysql/alternatives" title="MySQL Alternatives" class="css-p797gu">MySQL Alternatives</a><a href="/postgresql/alternatives" title="PostgreSQL Alternatives" class="css-p797gu">PostgreSQL Alternatives</a><a href="/mongodb/alternatives" title="MongoDB Alternatives" class="css-p797gu">MongoDB Alternatives</a><a href="/redis/alternatives" title="Redis Alternatives" class="css-p797gu">Redis Alternatives</a><a href="/amazon-s3/alternatives" title="Amazon S3 Alternatives" class="css-p797gu">Amazon S3 Alternatives</a></div><div class="css-1m38k02"><h2 class="css-162qu2y">Trending Comparisons</h2><a href="/stackups/kafka-vs-rabbitmq-vs-zeromq" title="Kafka vs RabbitMQ vs ZeroMQ" class="css-p797gu">Kafka vs RabbitMQ vs ZeroMQ</a><a href="/stackups/amazon-sqs-vs-kafka-vs-rabbitmq" title="Amazon SQS vs Kafka vs RabbitMQ" class="css-p797gu">Amazon SQS vs Kafka vs RabbitMQ</a><a href="/stackups/celery-vs-kafka-vs-rabbitmq" title="Celery vs Kafka vs RabbitMQ" class="css-p797gu">Celery vs Kafka vs RabbitMQ</a><a href="/stackups/kafka-vs-nsq-vs-rabbitmq" title="Kafka vs NSQ vs RabbitMQ" class="css-p797gu">Kafka vs NSQ vs RabbitMQ</a><a href="/stackups/kafka-vs-redis" title="Kafka vs Redis" class="css-p797gu">Kafka vs Redis</a></div></div></div></div></div> <script> renderComponent('ToolAlternatives','ToolAlternatives-react-component-8c2fa442-f07b-48d8-a46e-c304f79306a5','ToolAlternatives-apollo-state-8c2fa442-f07b-48d8-a46e-c304f79306a5','ToolAlternatives-glamor-8c2fa442-f07b-48d8-a46e-c304f79306a5', 'apollo','{"route":"/kafka/alternatives","userId":null,"description":" ActiveMQ, RabbitMQ, Amazon Kinesis, Apache Spark, and Akka are the most popular alternatives and competitors to Kafka. ","title":"Alternatives to Kafka","featureFlags":{}}'); </script>
<script type="application/json" id="Footer-apollo-state-b887cc69-1029-4251-be72-f428c4a31686">{}</script> <!-- glamorIds: 21 --> <script type="application/json" id="Footer-glamor-b887cc69-1029-4251-be72-f428c4a31686">["1htug8r","1yodi52","iepywa","x5hg3h","u0iaox","9ilv8v","ts0y2j","cs546h","1fco1ts","11a2nsi","1npm75a","1gn11bn","1y302zr","11gxadc","1iqd2ec","lneilx","de1dx1","1h53588","12k57td","j1o656","zr18wh"]</script> <style>@-webkit-keyframes animation_1htug8r{to{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@-moz-keyframes animation_1htug8r{to{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@-o-keyframes animation_1htug8r{to{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@keyframes animation_1htug8r{to{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@-webkit-keyframes animation_1yodi52{0%{background-position:0 0;}100%{background-position:100em 0;}}@-moz-keyframes animation_1yodi52{0%{background-position:0 0;}100%{background-position:100em 0;}}@-o-keyframes animation_1yodi52{0%{background-position:0 0;}100%{background-position:100em 0;}}@keyframes animation_1yodi52{0%{background-position:0 0;}100%{background-position:100em 0;}}@-webkit-keyframes animation_iepywa{0%, 100%{opacity:0;}50%{opacity:1;}}@-moz-keyframes animation_iepywa{0%, 100%{opacity:0;}50%{opacity:1;}}@-o-keyframes animation_iepywa{0%, 100%{opacity:0;}50%{opacity:1;}}@keyframes animation_iepywa{0%, 100%{opacity:0;}50%{opacity:1;}}@-webkit-keyframes animation_x5hg3h{100%{stroke-dashoffset:0;}}@-moz-keyframes animation_x5hg3h{100%{stroke-dashoffset:0;}}@-o-keyframes animation_x5hg3h{100%{stroke-dashoffset:0;}}@keyframes animation_x5hg3h{100%{stroke-dashoffset:0;}}@-webkit-keyframes animation_u0iaox{0%, 100%{transform:none;-webkit-transform:none;}50%{transform:scale3d(1.1, 1.1, 1);-webkit-transform:scale3d(1.1, 1.1, 1);}}@-moz-keyframes animation_u0iaox{0%, 100%{transform:none;-webkit-transform:none;}50%{transform:scale3d(1.1, 1.1, 1);-webkit-transform:scale3d(1.1, 1.1, 1);}}@-o-keyframes animation_u0iaox{0%, 100%{transform:none;-webkit-transform:none;}50%{transform:scale3d(1.1, 1.1, 1);-webkit-transform:scale3d(1.1, 1.1, 1);}}@keyframes animation_u0iaox{0%, 100%{transform:none;-webkit-transform:none;}50%{transform:scale3d(1.1, 1.1, 1);-webkit-transform:scale3d(1.1, 1.1, 1);}}@-webkit-keyframes animation_9ilv8v{100%{box-shadow:inset 0px 0px 0px 30px #068dfe;}}@-moz-keyframes animation_9ilv8v{100%{box-shadow:inset 0px 0px 0px 30px #068dfe;}}@-o-keyframes animation_9ilv8v{100%{box-shadow:inset 0px 0px 0px 30px #068dfe;}}@keyframes animation_9ilv8v{100%{box-shadow:inset 0px 0px 0px 30px #068dfe;}}.css-ts0y2j,[data-css-ts0y2j]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.4;letter-spacing:normal;-webkit-font-smoothing:antialiased;background:#333;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:center;align-items:center;padding:50px 0 80px;-webkit-box-pack:center;-webkit-justify-content:center;-webkit-box-align:center;-webkit-align-items:center;}@media only screen and (max-width: 768px){.css-ts0y2j,[data-css-ts0y2j]{padding:0 0 40px;}}.css-cs546h,[data-css-cs546h]{max-width:1220px;}@media only screen and (max-width: 992px){.css-cs546h,[data-css-cs546h]{width:700px;}}@media only screen and (min-width: 993px){.css-cs546h,[data-css-cs546h]{width:955px;}}@media only screen and (min-width: 1200px){.css-cs546h,[data-css-cs546h]{width:1220px;}}.css-1fco1ts,[data-css-1fco1ts]{display:grid;grid-template-columns:repeat(4, 1fr);justify-items:center;column-gap:3%;-ms-grid-template-columns:repeat(4, 1fr);-webkit-column-gap:3%;-moz-column-gap:3%;}@media only screen and (max-width: 768px){.css-1fco1ts,[data-css-1fco1ts]{grid-template-columns:1fr;text-align:center;-ms-grid-template-columns:1fr;}}.css-11a2nsi,[data-css-11a2nsi]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;flex-direction:column;align-items:center;text-align:left;width:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;}.css-1npm75a,[data-css-1npm75a]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;flex-direction:column;color:#fff;font-size:14px;line-height:1.7;letter-spacing:0.3px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;}.css-1npm75a a,[data-css-1npm75a] a{color:#fff;text-decoration:none;}.css-1npm75a a:visited,[data-css-1npm75a] a:visited{color:#fff;}.css-1npm75a a:hover,[data-css-1npm75a] a:hover{color:#068dfe;}.css-1npm75a a:hover span,[data-css-1npm75a] a:hover span{color:#fff;}.css-1npm75a a:active span,[data-css-1npm75a] a:active span{color:#fff;}@media only screen and (max-width: 768px){.css-1npm75a,[data-css-1npm75a]{align-items:center;width:95%;font-size:16px;line-height:2;-webkit-box-align:center;-webkit-align-items:center;}}.css-1gn11bn,[data-css-1gn11bn]{color:#fff;font-weight:600;font-size:20px;letter-spacing:0.38px;}@media only screen and (max-width: 768px){.css-1gn11bn,[data-css-1gn11bn]{margin-top:36px;margin-bottom:24px;}}.css-1y302zr,[data-css-1y302zr]{position:relative;}@media only screen and (min-width: 769px){.css-1y302zr,[data-css-1y302zr]{margin-right:auto;}}.css-11gxadc,[data-css-11gxadc]{padding:0;margin:8px 0;}.css-11gxadc li,[data-css-11gxadc] li{display:inline-block;margin:0 5px;}@media only screen and (min-width: 769px){.css-11gxadc li:first-child,[data-css-11gxadc] li:first-child{margin-left:0;}}@media only screen and (max-width: 768px){.css-11gxadc,[data-css-11gxadc]{margin:0 0 80px;}}.css-1iqd2ec svg:hover path,[data-css-1iqd2ec] svg:hover path{fill:#939393;}.css-lneilx,[data-css-lneilx]{margin-top:15px;line-height:100%;}.css-lneilx svg,[data-css-lneilx] svg{max-width:135px;}.css-lneilx svg g,[data-css-lneilx] svg g{fill:#fff;}@media only screen and (max-width: 768px){.css-lneilx,[data-css-lneilx]{margin-top:0;}}@media only screen and (max-width: 480px){.css-lneilx,[data-css-lneilx]{margin-top:0;}}.css-de1dx1,[data-css-de1dx1]{color:#fff;}.css-de1dx1 a,[data-css-de1dx1] a, .css-de1dx1 span, [data-css-de1dx1] span{display:inline-block;margin-right:8px;font-size:13px;letter-spacing:0.24px;}.css-de1dx1 a:last-child,[data-css-de1dx1] a:last-child{margin-right:0;}@media only screen and (max-width: 768px){.css-de1dx1,[data-css-de1dx1]{line-height:1.5;margin-top:14px;margin-bottom:11px;}}.css-1h53588,[data-css-1h53588]{margin:18px 0;}@media only screen and (max-width: 992px){.css-1h53588,[data-css-1h53588]{text-align:center;}}@media only screen and (max-width: 480px){.css-1h53588,[data-css-1h53588]{text-align:center;}}.css-12k57td,[data-css-12k57td]{font-family:Cerebri Sans Pro;margin-top:0;font-style:normal;font-weight:400;font-size:14px;line-height:25px;letter-spacing:0.375px;color:#fff;}.css-j1o656,[data-css-j1o656]{width:53px;height:53px;}.css-zr18wh,[data-css-zr18wh]{color:#c2c2c2;font-size:10px;margin-top:5px;}.css-zr18wh div,[data-css-zr18wh] div{white-space:nowrap;}@media only screen and (max-width: 768px){.css-zr18wh,[data-css-zr18wh]{font-size:13px;line-height:1.5;text-align:center;}}</style> <div id="Footer-react-component-b887cc69-1029-4251-be72-f428c4a31686" data-ssr="true" ><footer class="css-ts0y2j"><div class="css-cs546h"><div class="css-1fco1ts"><div class="css-11a2nsi"><div class="css-1npm75a"><h3 class="css-1gn11bn">Tools &amp; Services</h3><a href="/stackups/trending" title="Compare Tools">Compare Tools</a><a href="/search" title="Search Tools &amp; Services">Search</a><a href="/alternatives" title="Browse Tools &amp; Services">Browse Tool Alternatives</a><a href="/categories" title="Technology Tools &amp; Services">Browse Tool Categories</a><a href="/submit" title="Submit a Tool">Submit A Tool</a><a href="/admin/approval-tool" title="Approve Tools">Approve Tools</a></div></div><div class="css-11a2nsi"><div class="css-1npm75a"><h3 class="css-1gn11bn">Company</h3><a href="/featured-posts" title="Featured Posts">Blog</a><a href="/api" title="API">API</a><a href="/jobs" title="Jobs">Job Search</a><a href="/careers" title="Careers at StackShare" class="css-1y302zr">Careers</a><a href="/stackshare" title="Our Stack">Our Stack</a><a href="/vendors" title="Advertise With Us">Advertise With Us</a><a href="mailto:team@stackshare.io" title="Contact Us">Contact Us</a></div></div><div class="css-11a2nsi"><div class="css-1npm75a"><h3 class="css-1gn11bn">Follow Us</h3><ul class="css-11gxadc"><li><a href="https://twitter.com/stackshareio" target="_blank" rel="noreferrer noopener nofollow" class="css-1iqd2ec"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="#FFF" fill-rule="evenodd" d="M3.6 0h16.8A3.6 3.6 0 0 1 24 3.6v16.8a3.6 3.6 0 0 1-3.6 3.6H3.6A3.6 3.6 0 0 1 0 20.4V3.6A3.6 3.6 0 0 1 3.6 0zm14.29 9.964c.548-.389 1.005-.891 1.393-1.44a6.285 6.285 0 0 1-1.621.435c.594-.343 1.005-.891 1.21-1.553a5.867 5.867 0 0 1-1.758.685A2.759 2.759 0 0 0 15.08 7.2a2.788 2.788 0 0 0-2.787 2.81c0 .205.023.433.069.639A7.976 7.976 0 0 1 6.56 7.702a3.037 3.037 0 0 0-.365 1.417c0 .982.48 1.827 1.233 2.33-.456 0-.89-.138-1.256-.343v.022c0 1.37.96 2.49 2.238 2.764-.228.069-.48.092-.73.092-.183 0-.366-.023-.526-.046.343 1.119 1.394 1.873 2.604 1.896-.96.753-2.147 1.279-3.472 1.279a6 6 0 0 1-.662-.046c1.233.8 2.718 1.233 4.294 1.233 5.162 0 7.971-4.27 7.971-7.97v-.366z"></path></svg></a></li><li><a href="https://facebook.com/stackshareio" target="_blank" rel="noreferrer noopener nofollow" class="css-1iqd2ec"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="#FFF" fill-rule="evenodd" d="M16.478 24v-8h2.896l.201-3.069h-3.097v-2.237c0-.86.172-1.405 1.262-1.405h1.692l.143-2.925s-.86-.172-2.351-.172c-3.04 0-4.36 1.835-4.36 3.9v2.81H10.8V16h2.065v8H3.6A3.6 3.6 0 0 1 0 20.4V3.6A3.6 3.6 0 0 1 3.6 0h16.8A3.6 3.6 0 0 1 24 3.6v16.8a3.6 3.6 0 0 1-3.6 3.6h-3.922z"></path></svg></a></li><li><a href="https://www.linkedin.com/company/stackshare" target="_blank" rel="noreferrer noopener nofollow" class="css-1iqd2ec"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="#FFF" fill-rule="evenodd" d="M3.6 0h16.8A3.6 3.6 0 0 1 24 3.6v16.8a3.6 3.6 0 0 1-3.6 3.6H3.6A3.6 3.6 0 0 1 0 20.4V3.6A3.6 3.6 0 0 1 3.6 0zm5.521 17.16V9.378H6.374v7.782h2.747zM7.748 8.43c1.119 0 1.83-.807 1.83-1.815C9.554 5.578 8.868 4.8 7.749 4.8c-1.094 0-1.831.778-1.831 1.815 0 1.008.712 1.815 1.805 1.815h.026zm11.444 8.73v-4.12c0-2.518-1.246-4.12-3.205-4.12-1.119 0-1.932.661-2.288 1.653l-.102-1.195h-2.721c.025.305.076 1.83.076 1.83v5.952h2.747v-4.12c0-1.12.508-1.831 1.347-1.831.84 0 1.4.432 1.4 1.83v4.12h2.746z"></path></svg></a></li><li><a href="https://angel.co/stackshare" target="_blank" rel="noreferrer noopener nofollow" class="css-1iqd2ec"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="#FFF" fill-rule="evenodd" d="M3.6 0h16.8A3.6 3.6 0 0 1 24 3.6v16.8a3.6 3.6 0 0 1-3.6 3.6H3.6A3.6 3.6 0 0 1 0 20.4V3.6A3.6 3.6 0 0 1 3.6 0zm4.684 14.42c.365.493.708.877 1.029 1.153.322.276.579.413.769.413.14 0 .268-.064.385-.194a.624.624 0 0 0 .173-.42c0-.16-.114-.528-.341-1.11-.227-.58-.512-1.15-.849-1.71-.249-.418-.492-.733-.732-.947-.24-.214-.466-.319-.68-.319-.174 0-.366.111-.577.33-.212.223-.317.43-.317.622 0 .2.102.501.309.903.207.4.484.827.83 1.28zm6.062-4.06a89.757 89.757 0 0 0 1.296-3.767c.31-.99.465-1.598.465-1.824 0-.242-.053-.43-.155-.563h-.001a.51.51 0 0 0-.429-.2c-.23 0-.468.194-.707.582-.24.389-.505 1.014-.793 1.875l-1.238 3.622 1.562.275zm-4.45-.445a.982.982 0 0 1 .371-.058c.05 0 .149.005.298.013.147.01.392.03.73.063L9.958 6.022c-.347-.993-.615-1.644-.806-1.949-.19-.303-.397-.456-.619-.456a.513.513 0 0 0-.422.2c-.107.133-.16.313-.16.54 0 .384.144 1.052.433 2.004.29.953.724 2.202 1.303 3.749a.41.41 0 0 1 .21-.195zm6.22 2.129a1.006 1.006 0 0 0-.245-.293c-.338-.285-.998-.54-1.979-.765a13.608 13.608 0 0 0-3.068-.338c-.296 0-.508.05-.632.15-.124.1-.186.272-.186.516 0 .567.314.98.943 1.233.627.255 1.643.382 3.049.382h.508c.116 0 .21.044.279.133.07.088.118.219.142.394-.14.134-.43.287-.866.456-.438.172-.774.341-1.005.508a4.53 4.53 0 0 0-1.196 1.31 3.99 3.99 0 0 0-.198.374c-.04.09-.07.176-.102.263-.012.034-.029.067-.04.1-.018.063-.03.125-.044.188-.013.056-.032.11-.04.166-.006.039-.006.076-.01.114-.008.076-.019.154-.019.228v.001c0 .277.063.609.192.997.128.388.192.629.192.72v.086l-.025.112c-.364-.023-.65-.239-.863-.644-.21-.406-.315-.947-.315-1.622v-.112a.719.719 0 0 1-.192.125.553.553 0 0 1-.205.037c-.074 0-.144-.006-.212-.019a2.132 2.132 0 0 1-.222-.058v.001c.024.094.043.182.056.27a1.05 1.05 0 0 1-.34 1.003 1.22 1.22 0 0 1-.856.331c-.52 0-1.05-.256-1.587-.77-.537-.515-.806-1.017-.806-1.51 0-.091.01-.172.032-.243a.406.406 0 0 1 .104-.182c.115.142.278.35.483.627.545.76 1.05 1.14 1.512 1.14.157 0 .297-.05.422-.149.123-.1.185-.206.185-.313v-.001c0-.127-.083-.334-.248-.629a8.366 8.366 0 0 0-.681-.99c-.33-.425-.606-.736-.826-.933-.217-.196-.394-.295-.525-.295-.29 0-.557.157-.8.47a1.756 1.756 0 0 0-.366 1.11c0 .344.086.725.254 1.147.168.422.416.846.738 1.271a4.937 4.937 0 0 0 1.816 1.524c.723.355 1.522.532 2.4.532 1.611 0 2.96-.607 4.046-1.823 1.088-1.216 1.632-2.739 1.632-4.568 0-.56-.04-1.005-.124-1.337a1.67 1.67 0 0 0-.162-.425zm-4.733 2.915a6.14 6.14 0 0 1 .626-.682c.218-.206.449-.386.689-.545a8.167 8.167 0 0 1-1.01-.113 5.067 5.067 0 0 1-.912-.252c.133.268.25.535.354.802.103.268.188.532.253.79z"></path></svg></a></li></ul></div></div><div class="css-11a2nsi"><div class="css-1npm75a"><a href="/" class="css-lneilx"><svg width="203" height="31" viewBox="0 0 812 124" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414"><g id="Layer1" fill-rule="nonzero"><path d="M221.086 85.794c0 7.342-2.55 12.933-7.651 16.775-5.101 3.842-12.731 5.762-22.889 5.762-5.208 0-9.647-.352-13.318-1.056-3.671-.704-7.107-1.739-10.308-3.105V88.035c3.628 1.707 7.715 3.137 12.261 4.29 4.546 1.152 8.547 1.728 12.005 1.728 7.085 0 10.628-2.048 10.628-6.146 0-1.537-.469-2.785-1.408-3.746-.939-.96-2.561-2.048-4.866-3.265-2.305-1.216-5.379-2.636-9.22-4.258-5.506-2.305-9.551-4.439-12.133-6.402-2.583-1.964-4.461-4.215-5.635-6.755-1.173-2.54-1.76-5.666-1.76-9.38 0-6.36 2.465-11.279 7.395-14.758 4.93-3.479 11.919-5.218 20.968-5.218 8.623 0 17.01 1.878 25.163 5.634l-5.891 14.086c-3.585-1.537-6.936-2.796-10.052-3.778a31.589 31.589 0 0 0-9.54-1.472c-5.762 0-8.643 1.558-8.643 4.674 0 1.75.928 3.265 2.785 4.546 1.857 1.28 5.922 3.18 12.197 5.698 5.591 2.262 9.689 4.375 12.293 6.339 2.604 1.963 4.524 4.225 5.762 6.786 1.238 2.561 1.857 5.613 1.857 9.156zM259.924 92.773c3.415 0 7.513-.747 12.293-2.241v14.534c-4.866 2.177-10.841 3.265-17.927 3.265-7.811 0-13.499-1.974-17.063-5.922-3.564-3.948-5.346-9.871-5.346-17.767V50.131h-9.348v-8.259l10.756-6.531 5.635-15.11h12.485v15.238h20.04v14.662h-20.04v34.511c0 2.774.779 4.823 2.337 6.146 1.558 1.323 3.617 1.985 6.178 1.985zM325.59 107.051l-3.778-9.732h-.512c-3.287 4.14-6.669 7.011-10.148 8.611-3.479 1.601-8.014 2.401-13.606 2.401-6.872 0-12.282-1.963-16.23-5.89-3.949-3.927-5.923-9.519-5.923-16.775 0-7.598 2.657-13.2 7.971-16.807 5.315-3.607 13.329-5.602 24.042-5.986l12.421-.384v-3.138c0-7.256-3.713-10.884-11.14-10.884-5.72 0-12.443 1.728-20.168 5.186l-6.467-13.19c8.238-4.311 17.372-6.466 27.403-6.466 9.604 0 16.967 2.091 22.089 6.274s7.683 10.543 7.683 19.08v47.7H325.59zm-5.763-33.166l-7.555.256c-5.677.171-9.902 1.195-12.677 3.074-2.774 1.878-4.162 4.738-4.162 8.579 0 5.506 3.159 8.259 9.476 8.259 4.525 0 8.142-1.301 10.853-3.905 2.71-2.604 4.065-6.061 4.065-10.372v-5.891zM381.843 108.331c-22.281 0-33.421-12.229-33.421-36.687 0-12.165 3.03-21.459 9.091-27.883 6.061-6.424 14.748-9.636 26.059-9.636 8.281 0 15.708 1.622 22.281 4.866l-5.762 15.11c-3.074-1.238-5.933-2.251-8.58-3.041-2.646-.79-5.293-1.185-7.939-1.185-10.159 0-15.238 7.214-15.238 21.641 0 14.001 5.079 21.001 15.238 21.001 3.756 0 7.235-.502 10.436-1.505 3.202-1.003 6.403-2.571 9.604-4.706v16.711c-3.158 2.006-6.349 3.394-9.572 4.162-3.222.768-7.288 1.152-12.197 1.152zM432.398 68.123l8.516-10.885 20.04-21.769h22.025l-28.428 31.053 30.157 40.529h-22.537l-20.617-29.004-8.387 6.723v22.281h-19.528V7.426h19.528V51.86l-1.025 16.263h.256z"></path><path d="M538.336 85.794c0 7.342-2.55 12.933-7.651 16.775-5.101 3.842-12.73 5.762-22.889 5.762-5.208 0-9.647-.352-13.318-1.056-3.671-.704-7.107-1.739-10.308-3.105V88.035c3.628 1.707 7.715 3.137 12.261 4.29 4.546 1.152 8.548 1.728 12.005 1.728 7.086 0 10.628-2.048 10.628-6.146 0-1.537-.469-2.785-1.408-3.746-.939-.96-2.561-2.048-4.866-3.265-2.305-1.216-5.378-2.636-9.22-4.258-5.506-2.305-9.551-4.439-12.133-6.402-2.582-1.964-4.46-4.215-5.634-6.755-1.174-2.54-1.761-5.666-1.761-9.38 0-6.36 2.465-11.279 7.395-14.758 4.93-3.479 11.92-5.218 20.969-5.218 8.622 0 17.009 1.878 25.162 5.634l-5.89 14.086c-3.586-1.537-6.937-2.796-10.053-3.778a31.589 31.589 0 0 0-9.54-1.472c-5.762 0-8.643 1.558-8.643 4.674 0 1.75.928 3.265 2.785 4.546 1.857 1.28 5.923 3.18 12.197 5.698 5.592 2.262 9.689 4.375 12.293 6.339 2.604 1.963 4.525 4.225 5.763 6.786 1.237 2.561 1.856 5.613 1.856 9.156zM613.093 107.051h-19.528V65.242c0-10.33-3.841-15.495-11.524-15.495-5.464 0-9.412 1.857-11.845 5.571-2.433 3.713-3.65 9.732-3.65 18.055v33.678h-19.528V7.426h19.528v20.296c0 1.58-.149 5.293-.448 11.141l-.448 5.762h1.024c4.354-7 11.269-10.5 20.745-10.5 8.409 0 14.79 2.262 19.144 6.787 4.353 4.524 6.53 11.012 6.53 19.464v46.675zM672.1 107.051l-3.778-9.732h-.512c-3.286 4.14-6.669 7.011-10.148 8.611-3.479 1.601-8.014 2.401-13.606 2.401-6.872 0-12.282-1.963-16.23-5.89-3.948-3.927-5.923-9.519-5.923-16.775 0-7.598 2.657-13.2 7.972-16.807 5.314-3.607 13.328-5.602 24.042-5.986l12.421-.384v-3.138c0-7.256-3.714-10.884-11.141-10.884-5.72 0-12.442 1.728-20.168 5.186l-6.467-13.19c8.238-4.311 17.373-6.466 27.403-6.466 9.604 0 16.967 2.091 22.089 6.274 5.123 4.183 7.684 10.543 7.684 19.08v47.7H672.1zm-5.762-33.166l-7.555.256c-5.677.171-9.903 1.195-12.678 3.074-2.774 1.878-4.161 4.738-4.161 8.579 0 5.506 3.158 8.259 9.475 8.259 4.525 0 8.142-1.301 10.853-3.905 2.71-2.604 4.066-6.061 4.066-10.372v-5.891zM739.238 34.125c2.646 0 4.845.192 6.595.576l-1.473 18.312c-1.579-.427-3.5-.641-5.762-.641-6.232 0-11.088 1.601-14.566 4.802-3.479 3.202-5.218 7.684-5.218 13.446v36.431h-19.528V35.469h14.79l2.881 12.037h.96c2.22-4.012 5.218-7.245 8.996-9.7 3.777-2.454 7.886-3.681 12.325-3.681zM779.293 48.019c-4.141 0-7.385 1.312-9.732 3.937-2.348 2.625-3.692 6.349-4.034 11.173h27.403c-.085-4.824-1.344-8.548-3.777-11.173s-5.72-3.937-9.86-3.937zm2.753 60.312c-11.525 0-20.531-3.18-27.019-9.54-6.488-6.36-9.732-15.366-9.732-27.019 0-11.994 2.998-21.267 8.996-27.819 5.997-6.552 14.288-9.828 24.874-9.828 10.116 0 17.991 2.881 23.625 8.643 5.635 5.763 8.452 13.723 8.452 23.882v9.476h-46.163c.213 5.549 1.857 9.882 4.93 12.997 3.073 3.116 7.384 4.674 12.933 4.674 4.311 0 8.388-.448 12.229-1.344 3.842-.897 7.854-2.326 12.037-4.29v15.11c-3.414 1.708-7.064 2.978-10.948 3.81-3.885.832-8.622 1.248-14.214 1.248z"></path></g><g fill="#008ff9"><path d="M101.98 83c-3.9 0-7.157 2.792-7.886 6.482-.212 1.564 0 3.123 0 3.123.73 3.687 3.986 6.477 7.885 6.477 4.434 0 8.042-3.605 8.042-8.04 0-4.434-3.608-8.042-8.042-8.042M32.041 54C27.607 54 24 57.606 24 62.041c0 4.433 3.607 8.041 8.041 8.041 4.435 0 8.042-3.608 8.042-8.041 0-4.435-3.607-8.041-8.042-8.041m69.924-12.918c4.435 0 8.042-3.608 8.042-8.041 0-4.435-3.607-8.041-8.042-8.041-3.898 0-7.155 2.791-7.885 6.48v.049s-.18 1.654 0 3.073c.73 3.689 3.987 6.48 7.885 6.48"></path><path d="M101.965 105.961c-6.965 0-12.841-4.655-14.692-11.022H73.376l-.076.043-16.575-28.517H46.592c-1.852 6.367-7.727 11.023-14.694 11.023-8.451 0-15.303-6.852-15.303-15.303 0-8.452 6.852-15.305 15.303-15.305 6.967 0 12.842 4.656 14.694 11.025h9.905l.128-.217L73.3 28.999l.141.083h13.768c1.852-6.369 7.727-11.025 14.692-11.025 8.453 0 15.305 6.853 15.305 15.305 0 8.451-6.852 15.304-15.305 15.304-6.965 0-12.84-4.656-14.692-11.025h-9.03l-14.14 24.326-.006.023.005.022L78.2 86.378h9.073c1.851-6.369 7.727-11.026 14.692-11.026 8.453 0 15.305 6.853 15.305 15.305s-6.852 15.304-15.305 15.304zM124.996 0H8.004C3.584 0 0 3.561 0 7.953v108.094C0 120.44 3.584 124 8.004 124h116.992c4.421 0 8.004-3.56 8.004-7.953V7.953C133 3.561 129.417 0 124.996 0z"></path></g></svg></a><div class="css-de1dx1"><a href="/terms">Terms</a><span>·</span><a href="/privacy">Privacy</a></div><div class="css-1h53588"><h3 class="css-12k57td">SOC 2 Type 2 Certified</h3><a href="http://www.aicpa.org/soc4so" rel="nofollow noreferrer noopener" target="_blank" title="SOC2 badge"><img src="https://img.stackshare.io/fe/SOC2.png" class="css-j1o656"/></a></div><div class="css-zr18wh"><div>Copyright © <!-- -->2022<!-- --> StackShare, Inc. </div><div>All rights reserved.</div></div><div class="css-de1dx1"><a href="/html-sitemaps/stackups/main.html">Sitemap</a></div></div></div></div></div></footer></div> <script> renderComponent('Footer','Footer-react-component-b887cc69-1029-4251-be72-f428c4a31686','Footer-apollo-state-b887cc69-1029-4251-be72-f428c4a31686','Footer-glamor-b887cc69-1029-4251-be72-f428c4a31686', 'apollo','{"isAdmin":null}'); </script>