- What is the problem you are trying to solve?
- What is the the peak volume of users that will interact with your system?
- What are the data write and read patterns going to be?
- What are the expected failure cases, how do you plan to mitigate them?
- What are the availability and consistency expectations?
- Do you need to worry about any auditing, regulation aspects?
- What type of sensitive data are you going to be storing?
Setting Your Baseline
Start Building up Your Data Storage and Retrieval Knowledge
I am not sure if this logical grouping makes sense here. I will go with it anyway since it’s the closest term that reflects what I want to cover here.
What About My Business Logic? Structuring Business Logic, Workflows and Components
Some Other Resources
- System Design: How to design Twitter?
- System Design: Uber Lyft ride sharing services
- System Design Cheatsheet
- Design News Feed System (Part 1)
- Design News Feed System (Part 2)
- Latency Numbers Every Programmer Should Know
- Scalability Harvard Web Development by David Malan
- A curated list of Domain-Driven Design (DDD), Command Query Responsibility Segregation (CQRS), Event Sourcing, and Event Storming resources
- A Golang reference implementation of the CQRS pattern
- A practical security guide for web developers
- Udi Dahan on Defining Service Boundaries
- Designing microservices: Identifying microservice boundaries
- Distributed Sagas: A Protocol for Coordinating Microservices - Caitie McCaffrey (Slides)
- Deriving Meaning in a Time of Chaos: The Intersection Between Chaos Engineering and Observability for Distributed Systems
- What is a Reverse Proxy vs. Load Balancer?
I had an amazing time in Johannesburg this week and had the privilege to attend DevConf 2016 as a speaker. I got to travel to South Africa for the first time and I really liked the country, especially the food :) Also, I tried to be a social developer and had a chance to meet with a few new amazing folks like Colin Dembovsky, Lisa Basel, Chris Tite, Mark Pearl and many others that I cannot remember right now after a few beers at Dubai airport while writing this blog post :)
During the conference, I attended a few other talks apart from giving one. Here are all of them:
- A year of dealing with RabbitMQ
- Lap around Azure Machine Learning
- Getting Started with Analytics (GTM and GA)
- Brownfield TDD: How to eat an elephant?
- Adjust your behaviour and be surprised how much you can influence your team
- Building real world microservices using Node.js
- People are pulling away from so-called Microsoft stack as much as it makes sense, especially on the data storage part. This is a good thing for everyone, even for Microsoft. Microsoft being more open has the biggest effect on this.
- People who experienced relational database architecture where the business logic sits inside the database seems to have learnt the lessons very well.
- Microservices had its appearance throughout the conference again :)
- Polyglot persistence seems to be what most of the people are applying today without knowing the term that much :) Not knowing the term is no problem at all. Remember: this type of terms (e.g. Microservices) help communicate during planning processes and discussions easier.
- Application and Database Lifecycle management is more about the culture and less about the tools. People who want to adopt this culture seek advice from consulting companies, they need tools just to get the job done.
- Infrastructure as code is grabbing more and more attention.
My Talk: Architecting Polyglot-persistent Solutions
Apart from a few logistical problems during my talk (like electricity going out completely!), it was really good overall. This was very first time I have given this talk and it was based on the experience I had over a few years on Zleek.
Here are also a few more links that you may find useful on this topic:
- Polyglot Persistence by Martin Fowler
- An evolving example on Polyglot Persistence
- Webinar: MongoDB and Polyglot Persistence Architecture
- Building Microservices with Polyglot Persistence Using Spring Cloud and Docker
- Mongo on Hadoop
- Getting Started with Neo4j in .NET with Neo4jClient Library
I would like to thank all the DevConf team who made this conference happen and all the audience for their amazing attention for the conference. I am especially impressed with the attention to the detail that the DevConf team has shown.
I am going to be at a few conferences in upcoming weeks and I would like to share them here with you. Main objective here is to tell you about where I am going to be and this should help meeting new people and learning about different experiences. Jeremy Clark, a friend I met at Codemash 2016, has an amazing blog post on becoming a social developer. I encourage you to check that out to see why and how.
DevConf, Johannesburg (8th of March)
I am very, very excited about DevConf. Source of this excitement is the talk I will deliver there and the content of the conference. I will be presenting on architecting polyglot-persistent solutions as part of the Persistence and Data track. This is a topic which is very close to my heart as I had the first hand experience while working on Zleek on what a big difference this type of architecture can make on your software product. It will also be the first time I will deliver this talk.
Rest of the agenda also looks pretty impressive. So, I am sure this will be well worth the long trip to South Africa :)
Microsoft Build 2016, San Francisco (30th of March - 1st of April)
At the end of March, I will also be in San Francisco to attend Microsoft Build conference. This is also very exciting for several reasons. Obvious one is that there will be a lot of existing and soon-to-be friends there from the community and this is a very developer centric conference in view of Microsoft products. Also, I don't get to attend conferences that often as an attendee. I am sure I will feel the comfort of gliding through the session rooms and not trying to prepare for a talk. If you add the fact that this is going to be my first trip to San Francisco, it will be a real fun :)
Last year, my wish for Build Conference announcements came true with Visual Studio Code and I am very much looking forward to this year's announcements, too.
I T.A.K.E. Unconference 2016, Bucharest (19th - 20th of May)
At I T.A.K.E. Unconference 2016, I will talk about two very interesting topics and I think both of them are very interesting considering the type of software solutions and the way we produce them nowadays.
- How Docker Changes the Way You Work with and Release Your Microservices
- Zero Downtime Deployment Golden Rules
I am very much looking forward both of them since it's going to be the first time that I present these sessions. It seems like it's still possible to register and you can also check the rest of the schedule out here.
If you are going to be around for any of the above events, let's meet and say hi to each other :)
- .NET Core
- ASP.NET 5
- ASP.NET Core
- ASP.NET MVC
- ASP.NET vNext
- ASP.NET Web API
- Aspect Oriented Programming
- Azure Search
- Azure Storage
- Azure Web Apps
- Blob Storage
- Code Review
- Cognitive Services
- Congress & Convention Tourism
- Continious Delivery
- Continuous Delivery
- Continuous Integration
- Data Structures
- Docker Compose
- Entity Framework
- Facts & Figures
- Geek Talks
- IT Stuff
- Machine Learning
- Microsoft Azure
- Microsoft Office
- Microsoft SQL Server
- MS SQL
- Octopus Deploy
- Polyglot Persistance
- Software Development
- Software Engineer
- SQL Injection
- SQL Release
- SQL Server
- Tech Guys
- Time Saviour
- Tourism Business
- Travis CI
- TV Series
- Unit Testing
- Visual Basic
- Visual Studio
- WCF Web API
- Web Application
- Windows 8
- Windows Azure
- Windows Live Writer
- Windows Server AppFabric