Competing in Disruptive Digital Markets
Fast experimentation and short time to market are the essence of successful digital market leadership. Customer's immersion in technology opens up opportunities for creation of preveiously unknown experiences.
However, the required high level of agility puts pressure on software quality, often leading to a drop in productivity after early praise.
Solutions Engineering is an approach towards shaping an engineering culture for digital product development. It helps you to maintain the ability to experiment and innovate at manageable risk.
Clear Responsibility Model
Mapping the target system to a general model of services and dependencies is the basis for applying the engineering framework and creates clarity in heterogeneaous systems.
Objective and Indicator Driven
Objectives and quantitative indicators are applied to all aspects of the digital product lifecycle. This enables the formulation of measurable goals and indicator tracking that serve as a clear driver for decision making across the complete product lifecycle. Ad-hoc- and gut-feeling decisions are removed.
The application of objectives and indicators requires capacity planning from the beginning. This avoids problem driven, last-resort over-provisioning and helps to optimize infrastructure cost.
The general model in combination with defining target system chracteristics with quantitative indicators help with status-quo assessment and definition and tracking of transition roadmaps.
Moving a portion or the complete IT to the Cloud has become imperative for many organisations. We help clients to define their cloud strategy and migration roadmap. We aid in provider selection and guidance which cloud level to target (IaaS vs PaaS)
Cloud Strategy Consulting
Moving parts or all of your business to the cloud involves making decisions that have a mid- to long term impact on your organisation. We can help you understand possible decision options and their implications and refine your cloud strategy so that it matches your mid- to long term business goals.
Cloud computing provides the opportunity to leverage synergetic effects across larger numbers of development teams. Centralizing activities that otherwise need to be done by each team yields an efficiency gain, reduces potential for bugs and can act as an abstraction that reduces vendor- or product lock-in effects.
Developing for the Cloud
The cloud brings with it a number of challenges, such as much reduced availability guarantees or the distribution of algorithms and data across in general larger numbers of smaller nodes. We help development teams to create proper system designs and understand interaction- and data modeling patterns for the prevalent PaaS-level products of the major cloud vendors.
Site Reliability Engineering
Site Reliability Engineering has proven to be a successful solution to the tension between an agile focus on feature delivery and constantly maintaning software product quality to efficiently operate the product within the desired service level boundaries.
If you are planning to introduce Site Reliability Engineering to your organisation? We help you to pick the most suitable SRE approach and to enable the prospect SRE teams. We also assist with introducing the SRE concept to management and agile development teams as an extension of the devops mindset.
At the end of the day it is unavoidable: someone must answer the pager at night if an alert goes off. We organise efficient site operations on your behalf if it is not feasible for you (yet) to build an in-house SRE team.
A corner stone of successful SRE is to define optimal availability objectives for features and services. We help your product owners to develop an understanding of how to define suitable and realistic service level objectives, and how to leverage them for work priorisation using the error budget methodology.
The more reliable digital products are, the fewer site reliability engineers are neccessary, leaving more highly skilled resources for feature development. We train your development teams in reliable systems design.
Technologies and Topics We Like to Use
We think Rust hits a sweet spot between efficiency, productivity, and joy of use. For us, it is the language of choice for most situations, especially because it provides rather painless control over low level concerns and brings with it the best asynchronous IO / reactive implementation available today. If you want to learn about what Rust has to offer for developing highly performant solutions, reducing cloud infrastructure cost, or IoT projects, lets us know. We can help your team reduce Rust's rather steep learning curve.
For small prototypes or when some task becomes unwieldy in shell scripting, we like Go as a language with extreme productivity and a very short learning curve.
Functional programming provides a great way for modeling complex business problems with high accuracy. Scala is our language of choice if Rust's functional support falls short of what we aim to do. With Akka or Finagle, Scala also provides great async/reactive support.
We have been active in the REST community since the very beginning and over 10 years of experience in applying Web architecture to enterprise integration scenarios. We help your development teams and architects to leverage the full potential of REST/HTTP for API design or highly efficient Web infrastructures.
Cloud infrastructure and services have characteristics that impose a number of demands on digital products when moving to the cloud. Whether your approach is "lift and shift" or greenfield in the cloud, we help you define the best strategy and avoid any pitfals.
Understanding the challenges of distributed systems is essential for engineering modern software systems. We help development teams to succeed in scenarios, where services and data needs to span across continents or the globe.