Урок 1. 00:04:57
Introduction
Урок 2. 00:03:50
Course pre-requisites
Урок 3. 00:05:42
Setting up the developer environment
Урок 4. 00:04:49
Course assets and source code
Урок 5. 00:05:30
VS Code troubleshooting and tips
Урок 6. 00:06:58
Microservices - the big picture
Урок 7. 00:05:27
Introduction to section 2
Урок 8. 00:11:23
Creating the first micro service
Урок 9. 00:12:25
Reviewing and simplifying the project
Урок 10. 00:10:05
Adding the entity classes
Урок 11. 00:13:40
Adding the Database context class
Урок 12. 00:10:11
Adding a Postgres database server
Урок 13. 00:08:28
Creating seed data
Урок 14. 00:09:49
Shaping the data to return
Урок 15. 00:11:48
Adding an API controller
Урок 16. 00:08:17
Adding a postman collection
Урок 17. 00:08:45
Adding the create auction endpoint
Урок 18. 00:06:57
Adding the update auction endpoint
Урок 19. 00:04:54
Adding the delete auction endpoint
Урок 20. 00:06:45
Saving changes into source control
Урок 21. 00:01:50
Summary
Урок 22. 00:06:06
Introduction to Section 3
Урок 23. 00:09:02
Creating the second micro services
Урок 24. 00:08:38
Adding the MongoDb server
Урок 25. 00:07:57
Adding the Item model
Урок 26. 00:08:14
Adding seed data
Урок 27. 00:09:44
Adding a search controller
Урок 28. 00:05:10
Paginating the results
Урок 29. 00:11:43
Adding filtering and ordering
Урок 30. 00:08:09
Synchronous messaging
Урок 31. 00:16:24
Adding Http communication to get the data
Урок 32. 00:15:22
Making our Http communication resilient
Урок 33. 00:01:23
Summary of Section 3
Урок 34. 00:05:55
Introduction to Section 4
Урок 35. 00:05:47
What is RabbitMQ
Урок 36. 00:04:34
Installing RabbitMQ
Урок 37. 00:09:50
Adding and configuring mass transit
Урок 38. 00:05:09
Adding the contracts
Урок 39. 00:10:45
Adding a consumer to consume a message from the Service bus
Урок 40. 00:08:59
Publishing the Auction Created event to the bus
Урок 41. 00:10:49
What could go wrong?
Урок 42. 00:13:26
Adding a message outbox
Урок 43. 00:06:36
Using message retries
Урок 44. 00:09:03
Consuming fault queues
Урок 45. 00:04:48
Challenge: Adding the update and delete consumers
Урок 46. 00:06:41
Challenge solution
Урок 47. 00:01:09
Summary of section 4
Урок 48. 00:07:40
Introduction to Section 5
Урок 49. 00:10:30
OAuth and OpenIDConnect
Урок 50. 00:05:01
Creating the Identity Server project
Урок 51. 00:12:52
Reviewing and configuring our new project
Урок 52. 00:17:20
Seeding data and adding a migration
Урок 53. 00:05:50
Reviewing the login page in identity server
Урок 54. 00:08:12
Adding a register page
Урок 55. 00:07:33
Adding a register page part 2
Урок 56. 00:08:34
Adding a register page part 3
Урок 57. 00:12:54
Adding client credentials to allow clients to request a token
Урок 58. 00:06:11
Adding a custom profile service to identity server
Урок 59. 00:06:47
Configuring auth on the resource server
Урок 60. 00:08:06
Configuring the auth endpoints on the resource server
Урок 61. 00:02:48
Summary of section 5
Урок 62. 00:04:12
Introduction to Section 6
Урок 63. 00:06:43
Adding the Gateway service
Урок 64. 00:10:17
Adding the Reverse Proxy configuration
Урок 65. 00:07:23
Adding authentication to the Gateway config
Урок 66. 00:07:55
Testing our Gateway service in Postman
Урок 67. 00:04:45
Adding the remaining contracts we need
Урок 68. 00:10:31
Adding the remaining consumers to the Auction Service
Урок 69. 00:06:20
Adding the remaining consumers in the Search Service
Урок 70. 00:07:11
Adding a new client to the Identity service configuration
Урок 71. 00:01:04
Summary of Section 6
Урок 72. 00:03:57
Introduction to Section 7
Урок 73. 00:04:42
Creating a docker account
Урок 74. 00:14:09
Dockerizing the Auction Service
Урок 75. 00:13:53
Updating our docker compose file for the Auction Service container
Урок 76. 00:08:52
Dockerising the Search service
Урок 77. 00:04:47
Dockerising the Identity Service
Урок 78. 00:11:04
Debugging a .Net service in a docker container
Урок 79. 00:08:06
Dockerising the Gateway Service
Урок 80. 00:11:22
Testing our docker containers
Урок 81. 00:03:04
Summary of Section 7
Урок 82. 00:08:37
Introduction to Section 8
Урок 83. 00:08:05
Creating the NextJS project
Урок 84. 00:11:12
Reviewing and simplifying the NextJS Project
Урок 85. 00:14:58
Creating a nav bar
Урок 86. 00:05:31
Fetching data from the API
Урок 87. 00:05:02
Adding an Auction Card component
Урок 88. 00:13:14
Styling the auction cards
Урок 89. 00:13:03
Adding a countdown timer to the auction card
Урок 90. 00:07:04
Adding loading to the images
Урок 91. 00:06:21
Adding types to the project
Урок 92. 00:08:36
Adding pagination to our list
Урок 93. 00:11:28
Using server functions in client components
Урок 94. 00:09:15
Adding a set page size option
Урок 95. 00:10:04
Using Zustand for state management
Урок 96. 00:10:53
Refactoring our code to use the zustand state
Урок 97. 00:05:34
Adding a search bar
Урок 98. 00:08:29
Adding the search functionality
Урок 99. 00:04:19
Adding a reset to the search function
Урок 100. 00:08:55
Adding the sorting functionality
Урок 101. 00:04:24
Adding the filtering functionality
Урок 102. 00:10:51
Adding a component to display when zero results
Урок 103. 00:01:09
Summary of section 8
Урок 104. 00:03:19
Introduction to Section 9
Урок 105. 00:04:55
Before we begin
Урок 106. 00:12:30
Installing Next Auth into our client app
Урок 107. 00:06:24
Adding the login functionality
Урок 108. 00:12:44
Getting the session details in the client
Урок 109. 00:10:40
Populating the session data
Урок 110. 00:08:59
Populating the User actions dropdown
Урок 111. 00:08:55
Protecting routes
Урок 112. 00:08:08
Testing API authentication
Урок 113. 00:11:03
Getting the access token to use to authenticate to our resource server
Урок 114. 00:05:43
Summary of Section 9
Урок 115. 00:01:33
Introduction to Section 10
Урок 116. 00:06:21
Routing in NextJS
Урок 117. 00:07:39
Getting the auctions won
Урок 118. 00:04:23
Creating an Auction form
Урок 119. 00:09:39
Creating an Auction form part 2
Урок 120. 00:08:55
Creating a reusable text input
Урок 121. 00:07:28
Creating the auction form part 3
Урок 122. 00:09:14
Creating a reusable date input
Урок 123. 00:14:07
Creating a fetch wrapper
Урок 124. 00:10:10
Adding the create auction server action
Урок 125. 00:05:07
Adding react hot toast to display notifications if something goes wrong
Урок 126. 00:09:28
Adding the auction details page content
Урок 127. 00:14:06
Adding the edit auction page
Урок 128. 00:08:43
Adding the delete auction functionality
Урок 129. 00:04:26
Summary of section 10
Урок 130. 00:02:35
Introduction to Section 11
Урок 131. 00:08:46
Creating the Bid Service
Урок 132. 00:04:46
Adding the models to the Bid Service
Урок 133. 00:10:33
Adding an API Controller for the bids
Урок 134. 00:02:19
Adding the get bids endpoint
Урок 135. 00:04:03
Adding the auction created consumer
Урок 136. 00:03:26
Testing the bid functionality in Postman
Урок 137. 00:06:04
Adding the DTOs and Automapper
Урок 138. 00:07:48
Adding a producer for the BidPlaced
Урок 139. 00:07:04
Challenge solution
Урок 140. 00:15:35
Adding a Background service for the auction finished event
Урок 141. 00:05:49
What is gRPC?
Урок 142. 00:13:57
Adding gRPC part 1
Урок 143. 00:06:02
Adding gRPC part 2
Урок 144. 00:12:03
Adding a gRPC client
Урок 145. 00:03:22
Updating the Gateway service
Урок 146. 00:10:36
Dockerising the BidService
Урок 147. 00:01:00
Summary of Section 11
Урок 148. 00:02:14
Introduction to Section 12
Урок 149. 00:05:30
Creating the Notification service
Урок 150. 00:05:17
Adding a SignalR Hub
Урок 151. 00:07:50
Adding the Consumers
Урок 152. 00:05:20
Adding CORS support to the Gateway
Урок 153. 00:02:36
Dockerising the NotificationService
Урок 154. 00:04:34
Updating the Docker compose file
Урок 155. 00:00:57
Summary of section 12
Урок 156. 00:00:33
Introduction to Section 13
Урок 157. 00:09:54
Refactoring the auctions into a zustand store
Урок 158. 00:05:26
Updating the Auction cards with the current high price
Урок 159. 00:03:25
Getting the bids for an auction
Урок 160. 00:09:57
Creating a bid item
Урок 161. 00:09:50
Creating a bid store
Урок 162. 00:14:33
Creating a bid form
Урок 163. 00:06:29
Updating the error handling
Урок 164. 00:05:04
Adding conditionals to the form and testing
Урок 165. 00:14:00
Adding SignalR to the client app
Урок 166. 00:05:02
Adding the new bid to SignalR
Урок 167. 00:06:51
Adding a toast for an auction created
Урок 168. 00:08:14
Adding a toast for an auction finished event
Урок 169. 00:11:46
Disabling the auction finished form when the auction finishes
Урок 170. 00:03:45
Preventing low bids
Урок 171. 00:00:52
Summary Section 13
Урок 172. 00:03:30
Introduction to Section 14
Урок 173. 00:12:03
Preparing the client app
Урок 174. 00:11:44
Creating the Dockerfile for nextjs
Урок 175. 00:15:09
Fixing the identity server issues in docker compose
Урок 176. 00:11:42
Giving the Identity Server a static ip address
Урок 177. 00:10:34
Adding an ingress to Docker compose
Урок 178. 00:07:13
Adding SSL to the ingress
Урок 179. 00:12:27
Final app cleanup and resolving SignalR issue
Урок 180. 00:04:55
End of course summary
Урок 181. 00:10:01
Intro to Appendix A - Testing
Урок 182. 00:13:52
The simplest unit test possible
Урок 183. 00:06:00
Reviewing the code in the Auction controller and what we are testing
Урок 184. 00:08:23
Creating an Auction Repository and interface
Урок 185. 00:04:34
Refactoring the Auctions controller to use the repository
Урок 186. 00:06:02
Mocking things
Урок 187. 00:08:49
Unit testing the GET methods part 1
Урок 188. 00:08:34
Unit testing the GET methods part 2
Урок 189. 00:12:15
Unit testing the POST request
Урок 190. 00:04:19
Challenge - Practicing creating unit tests for the other controller methods
Урок 191. 00:06:07
Challenge solution
Урок 192. 00:08:58
Integration testing setup
Урок 193. 00:10:02
Setting up a Custom web application factory for integration testing
Урок 194. 00:07:41
Adding test data to the DB
Урок 195. 00:11:13
Creating an integration test for the GET method part 1
Урок 196. 00:10:27
Creating an integration test for a GET request part 2
Урок 197. 00:13:39
Creating an integration test for the POST request
Урок 198. 00:01:51
Challenge - Practicing creating integration tests for the other methods
Урок 199. 00:03:11
Challenge solution
Урок 200. 00:10:37
Testing the Service bus
Урок 201. 00:10:39
Using Collection fixtures to share the DB across test classes
Урок 202. 00:09:39
Intro to Appendix B - Kubernetes
Урок 203. 00:12:55
No вЂdepends on’ in Kubernetes - using Polly to retry instead
Урок 204. 00:15:03
Adding a GitHub action to push our Identity Server image to Docker hub
Урок 205. 00:07:24
Deploying our IdentityServer to a Digital Ocean server
Урок 206. 00:10:48
Configuring the Linux server to host the identity server
Урок 207. 00:11:13
Creating the first Kubernetes manifest for a deployment
Урок 208. 00:06:38
Adding a persistent volume claim
Урок 209. 00:04:52
Adding a load balancer to allow us to connect to the postgres deployment
Урок 210. 00:02:50
Adding a cluster ip our services can use
Урок 211. 00:06:55
Creating a deployment for RabbitMQ
Урок 212. 00:04:40
Creating a Mongodb deployment
Урок 213. 00:11:23
Creating the auction service deployment
Урок 214. 00:05:52
Creating the search service deployment
Урок 215. 00:04:55
Creating the bid service deployment
Урок 216. 00:04:07
Creating the notification service deployment
Урок 217. 00:07:11
Creating the gateway service deployment
Урок 218. 00:07:55
Creating the client app deployment
Урок 219. 00:09:54
Adding an nginx ingress controller for docker-compose
Урок 220. 00:09:40
Adding SSL to the ingress controller
Урок 221. 00:16:24
Fixing Identity Server issues
Урок 222. 00:02:55
Introduction to Appendix C
Урок 223. 00:06:46
Kubernetes secrets
Урок 224. 00:06:34
Using a manifest to create secrets
Урок 225. 00:10:08
Updating the rest of the secrets
Урок 226. 00:09:22
Adding a workflow to deploy our Auction service
Урок 227. 00:06:00
Creating a kubernetes cluster on Digital Ocean
Урок 228. 00:07:07
Connecting to our new kubernetes cluster
Урок 229. 00:07:39
Creating a workflow to deploy our manifests automatically
Урок 230. 00:06:38
Dev resources and prod resources
Урок 231. 00:09:41
Creating the other deployment workflows for the other services
Урок 232. 00:06:15
Deploying the secrets and the ingress controller
Урок 233. 00:08:09
Deploying our manifests via github actions
Урок 234. 00:03:37
Checking our deployment
Урок 235. 00:07:42
Getting a domain name to point at our Load balancer
Урок 236. 00:13:49
Tying up the loose ends part 1
Урок 237. 00:04:52
Tying up the loose ends part 2
Урок 238. 00:09:33
Adding SSL to our deployment part 1
Урок 239. 00:09:11
Adding SSL to our deployment part 2
Урок 240. 00:08:12
Finishing up the deployment