“Startup - it’s not just an IT project” - a random sampling of problems we’ve faced so far.

18

Transcript of “Startup - it’s not just an IT project” - a random sampling of problems we’ve faced so far.

Decisions of Software Evolution

Taavet Tamm, a developer, nice to meet you.

Let’s get right into the following

● Couple of real-world examples● The abstract of software decisions

Click to edit Master title styleClick to edit Master title styleClick to edit Master title style

We need to make some decisions

Lets build the second application

● RubyOnRails ○ it fits the team○ matches what we’ve built before○ can we deliver fast

● Mongo○ Fits the features of the app

Lets build an app number xx

● NodeJS○ Fits the features ○ Performs well○ Encourages modular approaches

● DynamoDB○ Easy to scale○ Performance

Differences

● Old app is easy to kill and compicated to recover● New app is happily serving 2000 request/second

Microservices

● RabbitMq ● Java

RabbitMq - A message queue

● Asynchronous communication● Event based communication● Persistent communication● Configurability for future● Proven track record● Clients for several languages

We chose Java over Ruby

● Can it fit on a cheapest amazon node● Can it provide fast response time● Is the ecosystem mature● Can we build apis in it● Is it evolving or revolutionary

● JVM - predictable, performant● Fundamentals - threads, objects, annotations● Tooling - IDE, javadoc, debugging, code generation● Lightweight enough (jetty)● Easy to abstract and extract libraries● Load tests are good enough

Click to edit Master title styleClick to edit Master title styleClick to edit Master title style

The evolution

Less building more maintaining

● Scaling● Maintaining infrastructure● Reworking previous features● Working around past mistakes

Click to edit Master title styleClick to edit Master title styleClick to edit Master title style

Conway’s law

Click to edit Master title styleClick to edit Master title styleClick to edit Master title style

Application continuum

Conclusion

● App evolves with the company● Rewriting and maintaining things takes time● Day to day environment influences applications

more than features

Questions?