davidcaseria
davidcaseria on Hacker News
The Startup School logo is really cool - a bunch of Y Combinator 'Y's forming a tree. It fits what they seem to be going for with by calling the MOOC 'Startup School' and symbolizes the programming definition of Y Combinator. Whoever came up with that design does good work. :)
Avoiding large data migrations is one of the reasons to consider if using Command Query Responsibility Segregation (CQRS) and Event Sourcing (ES) is right for the application domain. It seems in this example the domain events haven't changed (i.e. subscription created, subscription canceled) but the logic enforcing subscriptions has (i.e. only one subscription then allowing multiple). If the events were stored in an append only journal then the subscription business logic just needs to change and no data needs to be migrated. Additionally, since the catalyst for this change seemed to be query side performance, the query service can be optimized for reading the records separate from the command service that writes to the event journal.
Event sourcing isn't without it's difficulties but if the domain is pretty well understood then it can be a very powerful pattern.
Stripe has an awesome product and seemingly an equally great engineering culture. I wonder if they have debated using CQRS/ES.
We're currently in the midst of implementing the independent application so we have not definitely solved our projection issues yet.
The main issue we have been running into is a performance bottle neck after restarting the application. Currently, when the application restarts (i.e. after a deployment) the projections may not update until several minutes. Our hypothesis is that if we can run projections independent of the command side of the application they can run indefinitely (i.e. as Spark jobs) since in theory a projection should not be updated. If we need to make changes to a projection then we will deploy another version to run side-by-side with the existing projection until the consumers migrate to the new version.
I work for a finance startup that uses Akka Persistence to implement an event sourced architecture. It has worked pretty well for us, much better than the original CRUD system. Akka can support a variety of different databases via journal plugins which has allowed us to maintain using a SQL database instead of being forced to adopt an unproven database.
The one area we've struggled with in the architecture is the query/projection side. Recently we have decided to completely separate the projection logic into a different application that is deployed independently to mitigate some of the issues we have been having.
http://doc.akka.io/docs/akka/2.4/scala/persistence.html
While that may be true for some/most startups in Chicago, the startup I work for, M1 Finance, is definitely looking for people passionate about building a great product and company:
https://www.m1finance.com/.
Posted by
davidcaseria on Friday September 09, 2016 @03:21PM
from the chicagoinno.streetwise.co dept.
Looking at the syntax briefly it seems very similar to Scala. Is there any major differences between Scala and Kotlin?
Hi @sama, you've been outspoken about the potential long term side effects of prolonged 0% interest rates. What do you think will be the worst side effect? Do you have any general advice for individuals to avoid the bad effects?
This is something I have been working on too (and have even taken some of the same steps). Thanks for sharing!
This is great resource for exploring sorting algorithms.
I think it would be beneficial if there was a way to determine the order in which each sort finishes.