OF SEVEN SPECIALISED, INTERLINKED COMPANY WITH OFFICES IN AMSTERDAM AND HILVERSUM (NETHERLANDS), PARIS, DELHI, BANGALORE AND BOSTON, WE EMPLOY OVER 700 PEOPLE WORLDWIDE
and productivity in initial phases Increased complexity from larger code base start to hinder progress Overall velocity reaches a potential stable but low point
things running reduces initial productivity A true modular architecture with correct boundaries profits from localised complexity The complexity of a business will always impact productivity in the end but overhead is reduced significantly Complexity Productivity
and productivity in initial phases Increased complexity from larger code base start to hinder progress Overall velocity reaches a potential stable but low point
Design • Services communicate on basis of contracts • Your event-log is the single point of truth, Event Source all your state* • Separate your writes from your reads / queries (CQRS) • Make your services stateful as a default** • Make your services elastic and resilient as a default
of the box • Default end-to-end support for message brokers • Able to run, test and continuously compile a complete microservice system on your local machine • Java / Scala support (and Kotlin if you bend it) • Spawns Cassandra & Kafka during local execution to get from idea to development after installation • Service locators & Circuit Breakers
PShippingInfo) extends POrderCommand with ReplyType[Done] case class AddPayment(reference: String) extends POrderCommand with ReplyType[Done] case object GetOrder extends POrderCommand with ReplyType[POrder] }
POrderEvent.Tag } object POrderEvent { val Tag = AggregateEventTag[POrderEvent] case class OrderCreated( orderLines: Seq[POrderLine], shippingInformation: PShippingInfo) extends POrderEvent case object OrderConfirmed extends POrderEvent case class OrderPaid(reference: String) extends POrderEvent }
confirmed: Boolean) object POrder { case class PShippingInfo(address: String, zipcode: String, city: String, country: String) case class PSKU(id: String) case class POrderLine(sku: PSKU, amount: Int) }