
Master the six golden rules of performance: avoid unnecessary calls, procrastinate slow work, divide and conquer, mitigate slow paths, measure continuously, and maintain supportability.
Apply first principles thinking to identify true performance bottlenecks, measure performance continuously, and deliver the core functional requirements with true data and efficient solutions for distributed systems.
Investigate disk I/O latency on a shared host by analyzing logging patterns, applying first principles, and using asynchronous writes to reduce performance impact while preserving supportability.
Move slow work out of band and return instantly, using a polled status or a queued push notification to inform clients as work completes, boosting responsiveness under varying load.
Divide and conquer drives performance by splitting problems for parallel processing. Combine and conquer when overhead limits gains, using partitioning and cloud scaling.
Leverages Azure Event Hub to batch and parallelize audit trail processing, replacing a queue approach with bulk inserts. Drives CPU down and enables cost savings with a managed SQL database.
Mitigate performance issues by applying first principles thinking to choose better tools and architectures, such as NoSQL for horizontal cloud scaling and Protocol Buffers over XML/JSON.
Discover how a Redis-backed session store, implemented via a repository pattern with timing metrics, eliminates performance bottlenecks for globally distributed web services through partitioning and failover.
Continuously measure performance by instrumenting production metrics and monitoring runtime health. Visualize data with graphs to detect memory leaks and improvement opportunities using tools like Application Insights, Prometheus, and Grafana.
Apply the six golden rules of performance to real world web services, building a practical mental framework, asking key questions, and starting to dig into code for scalable, production-ready improvements.
Explore how logging affects web service performance with log4net, testing rolling file appender, disk flush modes, and locking models like exclusive, minimal, and inter-process.
Evaluate asynchronous log appenders, both lossless and lossy, to decouple disk I/O from web service methods. Remove unnecessary ndc data and enable fix flags to achieve true async logging.
Find more of my courses on Udemy!
Turbocharge your production web services!
Are your web services suffering from performance issues? Every web programmer has experienced cases where web services or applications that ran perfectly in test and QA under light load failed (often spectacularly) when put under the load of a production deployment.
Performance has a strong relationship with cost. If you could either run double the load on the same hardware, or run the same load on half the amount of hardware, the cost impact can be tremendous for your project.
Wouldn’t it be nice if you had a bag of tricks that you could use to perfect your web service performance characteristics under load before you deployed to production, way back in the design and development phases where the cost was lowest? Maybe you inherited a legacy system that’s suffering from performance problems. But where do you start? Wouldn’t you like to be able to identify the problem areas quickly and be ready with some time-tested approaches to fix them?
That’s what this course is about: Practical, real world techniques that are easy to understand and use, that let you get maximum performance from your web services. You'll discover new ways of thinking about performance that you will use on every project, saving you time and money.
The Golden Rules of Performance
In this course you will learn my mental framework for creating solutions to performance-robbing problems that you can use in the design, development and production support phases of your services. The framework is built on a foundation that I call my Golden Rules of Performance, an easy to remember and easy to apply approach that will help you find and fix trouble areas in your code and architecture.
The course also includes a Golden Rules Cheat Sheet for you to use after the course giving you questions to ask, typical problem areas, and techniques to apply for a variety of scenarios. In one example you'll see how something as simple as logging can be dramatically improved by applying the Golden Rules.
You'll gain a clear understanding of how techniques like caching, queues and messaging, horizontal scaling, and other performance-boosting mechanisms work together to create systems that can dramatically increase your web services' capabilities.
The Experience
The course is divided into two parts. The first half is the "abstract" portion, consisting of spoken lectures that lay out the Golden Rules of Performance and regular "Reality Bites" segments that draw from my own personal experiences as a developer to show the rules in action in actual real world scenarios. There's no code involved in this part, just me talking with some occasional diagrams where it helps.
The second half is the "concrete" portion, where we start with a small web service and progressively apply the rules in various ways to improve the performance of it by 2.5 times with simple program changes so that you can see the Golden Rules in action. You'll see an example of logging performance increased by more than 100 times!
This is not a course where you will write code! This course is for thinking about system architecture and program design, not about using a particular language or framework. The assignments are intended to be more of an open discussion than "right or wrong" code submissions; to get the most benefit, consider making your submissions public so everyone can participate in the discussion.
I've tried to speak somewhat slowly to make the videos easier to follow if English is not your primary language, and there are captions in all videos to help as well. If your primary language is English, you may want to use the video controls to quicken the playback speed to something more comfortable.
The Tech Stack
This course is not about any specific tech stack! You can use these techniques with any language or framework you are using to create modern web services or applications.
For the examples, I will be using the C# language , Web API for .NET Framework for the web service framework, some Microsoft Azure features, and Microsoft SQL Server database-- but you don't need to know anything about C#, Web API framework, Azure or SQL Server to be able to follow what is happening in the examples since the discussion will be at a higher level. Remember, this course is for thinking about architecture and design, not writing or reviewing code.
Real World Focus
My "Real World" courses specifically target working developers solving actual problems in typical business programming scenarios. They are uniquely designed to cover areas you don't find in other courses on similar topics, from the specific viewpoint of developers who need to translate theory into practical application to solve the kinds of problems the "overview" courses don't help with. I assume you already know how to program and have built working commercial systems-- you won't find any "Hello, world" here!