DEV Community

Aaron Schlesinger
Aaron Schlesinger

Posted on • Originally published at arschles.com

How to make your app harder to write

GitHub logo dapr / dapr

Dapr is a portable, event-driven, runtime for building distributed applications across cloud and edge.

Any language, any framework, anywhere

Go Report Card CII Best Practices Docker Pulls Build Status E2E Tests codecov Discord License: Apache 2.0 FOSSA Status TODOs Follow on Twitter

Dapr is a portable, serverless, event-driven runtime that makes it easy for developers to build resilient, stateless and stateful microservices that run on the cloud and edge and embraces the diversity of languages and developer frameworks.

Dapr codifies the best practices for building microservice applications into open, independent, building blocks that enable you to build portable applications with the language and framework of your choice. Each building block is independent and you can use one, some, or all of them in your application.

Dapr overview

We are a Cloud Native Computing Foundation (CNCF) incubation project.

Goals

  • Enable developers using any language or framework to write distributed applications
  • Solve the hard problems developers face building microservice applications by providing best practice building blocks
  • Be community driven, open and vendor neutral
  • Gain new contributors
  • Provide consistency and portability through open APIs
  • Be platform agnostic across cloud and edge
  • Embrace…

This is the first post in a series about Dapr

Software is very easy to write. For lots of us programmers, it's really exciting to create something new.

Then it grows and changes over time. Like the foundation of a house, it looks indestructible at first, but the earth has forever to try and break it. It moves, causes cracks and eventually water leaks. The same thing happens to software.

Software is easy to write but hard to get right

Challenges of distributed systems

Look at any non-trivial, modern app, and you might be able to find 25% of the bugs that it has in it. You'll have no idea about the rest of them, because time and pressure can only find them.

Your app gets twice as hard to get right if it has to talk to other APIs, databases or microservices. Then you'll hit network blips, slow APIs, out-of-memory errors, and so on. In other words, the world will eventually find a way to break your app. You have to find a way to handle all of that.

Frameworks

That's where distributed frameworks come in. For modern distributed systems, these are sidecar processes/containers that give your app a simple API that helps you deal with these things.

They help you:

  • Save things to a database
    • Even if there's a problem with the database
  • Talk to other services
    • Even when you have to try again
  • Tell you what services your app is talking to
    • Even when you can't tell from the code
  • Responding to events like pub/sub
    • Even when you don't expect that many events

Dapr a new framework that can help with these things. Stay tuned for my next post to learn more!

GitHub logo dapr / dapr

Dapr is a portable, event-driven, runtime for building distributed applications across cloud and edge.

Any language, any framework, anywhere

Go Report Card CII Best Practices Docker Pulls Build Status E2E Tests codecov Discord License: Apache 2.0 FOSSA Status TODOs Follow on Twitter

Dapr is a portable, serverless, event-driven runtime that makes it easy for developers to build resilient, stateless and stateful microservices that run on the cloud and edge and embraces the diversity of languages and developer frameworks.

Dapr codifies the best practices for building microservice applications into open, independent, building blocks that enable you to build portable applications with the language and framework of your choice. Each building block is independent and you can use one, some, or all of them in your application.

Dapr overview

We are a Cloud Native Computing Foundation (CNCF) incubation project.

Goals

  • Enable developers using any language or framework to write distributed applications
  • Solve the hard problems developers face building microservice applications by providing best practice building blocks
  • Be community driven, open and vendor neutral
  • Gain new contributors
  • Provide consistency and portability through open APIs
  • Be platform agnostic across cloud and edge
  • Embrace…

Top comments (0)