OfficeDev / microsoft-teams-apps-icebreaker

Icebreaker is an open-source app for Microsoft Teams that helps the whole team get closer by pairing members up every week at random to meet for coffee, burgers, pizza, or a walk around the block.
MIT License
174 stars 206 forks source link

IceBreaker Architecture #306

Closed csnarain closed 1 year ago

csnarain commented 1 year ago

We recently implemented IceBreaker in our test Azure environment. It's actually shooting up our costs (may be because of cosmos db). Is there any reason why cosmos db was chosen? If we decide to re-architect it, can we replace cosmos db with say Azure SQL? We're looking for a scale of around 400K+ employees and over a million random connections in a week across the globe

gsv022 commented 1 year ago

Hi @csnarain , Thank you for raising the query. We will get back to you with proper response soon

v-royavinash commented 1 year ago

Cosmos DB offers the capability to store native JSON documents with a flexible schema. The data is automatically indexed and can be queried using a variant of the query language designed for JSON data. It can be automatically and instantly scaled up for workloads (in our case number of users added to any team).

The primary requirement was to choose a database that provides flexibility in storing a flexible schema and scalability. I understand that Cosmos DB can be expensive for large transactions. To better assess the situation, could you please provide specific data points such as the number of teams and user base you are planning to deploy IceBreaker for? This will help in comparing it with possible alternative DB options.

Regarding the possibility of replacing the DB layer with an alternative, it is indeed feasible. However, it is important to note that this would involve removing all dependencies on Cosmos DB and replacing them with alternative database calls. Additionally, the deployment script would need to be modified to create and deploy the required resources for the alternative database.

It will require complete design discussion and analysis, while this is a 100% doable solution, it would require significant effort to implement, and we would not be able to provide full support for updating the architecture.

ghost commented 1 year ago

This issue has been automatically marked as stale because it has been marked as requiring author feedback but has not had any activity for 4 days. It will be closed if no further activity occurs within 3 days of this comment.