The blog

Error message

  • Notice: Use of undefined constant q - assumed 'q' in nebb_preprocess_page() (line 132 of /home/62/w143230/nebbd7/sites/all/themes/nebb/template.php).
  • Notice: Use of undefined constant q - assumed 'q' in nebb_preprocess_page() (line 133 of /home/62/w143230/nebbd7/sites/all/themes/nebb/template.php).
  • Warning: Invalid argument supplied for foreach() in nebb_preprocess_page() (line 185 of /home/62/w143230/nebbd7/sites/all/themes/nebb/template.php).

EventStorming, yes, but how?

One of the facts that makes Nebb software products successful is that they are designed and developed in an agile fashion. The agile approach implies regular product (re) inception sessions, where we validate our software products on the latest changes on the market and the end-user feedback.

It is almost a rule that on our product inception sessions we have an EventStorming workshop. EventStorming is a workshop format for quickly exploring complex business domains and a method to quickly find out what is happening in the domain of a software program. There are two main reasons why we like EventStorming.

The first is that as a workshop model it has a certain structure, that if followed, it will end with a meaningful result. The second one - the structure does not suppress the analytical thinking of the participants. Moreover, the participants are stimulated to participate and to contribute with fresh ideas.

In a nutshell, EventStorming workshops prevents us from getting stuck in endless brainstorming that produces a useless model. I will here talk about few preparation steps that we usually do, to get the maximum of an EventStorming workshop.

Warm Up Meeting

Very often, when we have participants with different background, we organize a brief warm up meeting prior the EventStorming workshop. During the warm up meeting we discuss product related questions, such as: what is the product current state, what is the desired product state, and what do we need to do. The warm up meeting should only initiate the analytical thinking of the participants that will be utilized in the EventStorming workshop.

Invite the Right People

Reflecting on our experience with EventStorming, we have found that inviting the right people is essential for beneficial results. Usually we invite a wide range of technical as well as domain experts. The only thing that guaranties a solid behavioural model is the variety in expertise, in experience, in market knowledge, and in customer behaviour. Having the same type of participants will end up with a single point of view model, which is not what we want.

Provide Unlimited Modelling Space

One recommendation says that there should not be any obstacle, especially not a technical obstacle such as: limited modelling space (whiteboards, paper, etc.), stickers, markers, coffee, big enough room, etc. It might sound silly, but in order to encourage the analytical thinking, we must make sure we do not suppress it in any possible way. Therefore, please find enough walls and paper and stick it horizontally and vertically.

Start with a Simple Example

Honestly, it doesn't really matter how you start. However, we usually start with a less significant (from the domain point of view) and very simple event. That is a good example to show the participants (the ones that are not familiar with the concept) how the EventStorming works and to engage them. Once the participants are comfortable with the way of work, they easily jump to the more significant (and more complex) events.

Have you tried EventStorming in your company? What is your experience? Are you willing to try, but you don’t know how? Talk to us, we can help you.

NDC Oslo 2017 Impressions

A couple of weeks ago, I had a great opportunity to visit NDC Oslo 2017. NDC stands for Norwegian Developers Conference and is one of Europe`s largest conferences for .NET & Agile development. The first conference was held in Oslo in 2008 and today NDC Conferences are 5-day events with 2 days of pre-conference workshops and 3 days of conference sessions and are being held in Oslo, London, Sydney, and Copenhagen. What makes the NDC different is the quality and the quantity of the speakers and the topics it offers. Having this in mind I must say it is always a challenge to select the right sessions or to choose one session over several popular ones.

Looking at the agenda this year, I decided that my focus will be getting updated on .NET Core 2.0 from technology aspect and getting deeper and broader understanding of the microservices and serverless architecture from architectural aspect. In this blog post I will focus on the architectural talks that I think are worth sharing along with my personal thoughts. I found these topics very interesting because currently I am working on cloud solutions based on microservices and serverless architecture and I always want to compare my work with the latest trends.

I will start with Sam Newman and his talk "Confusion In The Land Of The Serverless." One of his points is that whenever we introduce FaaS (Functions as a Service) in our solution suddenly we have a big computing power. This means that certain pieces of our solution that were performing average now can perform very well and there is nothing wrong with this if the whole architecture is adjusted to the change. If that is not the case, we can introduce new bottlenecks that were not anticipated at all. For example, I was working on a project where the processing part of our solution was replaced with Azure Functions. At that point we could process a huge number of requests, however we could not store all the processed work because we have introduced a new bottleneck and that is the storage part. Afterwards we had to replace the existing storage (Blog Storage) with more efficient storage (Redis Cache.) just to make the whole architecture aligned to the new changes.

Here comes the question: How do we decide which technology to apply to solve certain bottlenecks? This question was very well elaborated by James Lewis in his talk: "Betting on Performance: A note on Hypothesis-driven Performance Testing." His main idea is that whenever we detect a problem, we propose a hypothesis based on our knowledge and experience, we implement a prototype, and we test the hypothesis. In general, this is nothing new, but with the latest cloud platforms is very easy to implement. For example, if we look at the example above with the storage bottleneck, it was very easy for us to test the new storage solution and to compare the performance results. The easiness of the testing comes from the fact that we can create a new Redis Cache component in Azure, we can deploy modified version of the Azure Functions to use the new storage part, and we can observe the results in Application Insights with just few clicks. In general, we can test the performance improvement hypothesis in less than an hour and we can have a go-no-go decision.

Another interesting talk that I would like to share is from my favorite Pluralsight author Scott Allen entitled "Building Resilient Applications In Microsoft Azure." Scott presented latest tools from Azure to make more resilient cloud solutions. For instance, there is already integrated retry policy in each SDK which offers more specific features than a generic retry library. I find it very useful that in Azure Storage retry policy there is a location mode to specify that retry attempts will access the secondary read-only copy if we are using geo-redundant storage. Scott has also spent some time on Service Fabric as the most appropriate approach for more resilient solutions and he has promised a new course for Service Fabric, which is already on Pluralsight.

I as a mentioned above, it is very difficult to decide which talks to visit and there are many interesting sessions that I didn't listen. However, being there allowed me to talk to some of the speakers and guests during the breaks and that helped me get answers to my questions and updates on certain topics. In a nutshell visiting NDC was a great experience, I got back with fresh ideas and motivation for making better products. Looking forward for NDC Oslo 2018.