The architecture of the attendance management system

Testa 571 Reputation points
2023-08-09T08:24:01.2066667+00:00

Hi,

We are planning to develop an application to achieve the points listed in the below.

1, The application is attendance management.

2, Users are expected to check-in and check-out in a specific area. If not, the system won’t let them check-in and out(using geolocation API for this)

3, maybe every 5-10 mins during 9am-10am and 5pm-7pm, check the database (Azure SQL) for the status of check-in and check-out.

4, If the users are not updating their status, the system send users reminders to do check-in & check-out.

5, we would like to send a reminder to user’s mobile. But since users IT literacy is very low, we don’t provide mobile apps, but just let them click the link and update the status.

The questions are:

1, For point 3, can we achieve this with Azure Function or Logic App?

(Currently doing testing with Azure Function Python, but getting an error.

"[Error] An error occurred: ('01000', "[01000] [unixODBC][Driver Manager]Can't

open lib '{ODBC Driver 18 for SQL Server};Server=tcp:~~~~~.database.windows.net,1433;Database=test;Uid=test22;

Pwd=mypassword;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;' : file not found (0) (SQLDriverConnect)". Cannot fix it and want to look for another way)

2, For point 4 and 5, should we use Azure Notifications? Or Azure communication services?

3, If you can suggest anything in terms of the architecture, that would be great!

Thank you.

Azure Notification Hubs
Azure Notification Hubs
An Azure service that is used to send push notifications to all major platforms from the cloud or on-premises environments.
360 questions
Azure Functions
Azure Functions
An Azure service that provides an event-driven serverless compute platform.
5,669 questions
Azure Communication Services
Azure Communication Services
An Azure communication platform for deploying applications across devices and platforms.
1,102 questions
Azure Logic Apps
Azure Logic Apps
An Azure service that automates the access and use of data across clouds without writing code.
3,449 questions
{count} votes

Accepted answer
  1. Pramod Valavala 20,656 Reputation points Microsoft Employee
    2023-08-09T17:11:00.1+00:00

    @Testa There are a few options for each requirement that you could consider based on your exact requirements

    For #3, either Azure Logic App or Azure Function would suffice as you've mentioned. For the exact error in Azure Function, it could be an issue with the library or build. Usually, a remote build should do the trick. If not, creating a new post for just that error should help get a better response from others you might have faced the same issue.

    Considering the simplicity though, you could also consider using Logic Apps here using the SQL Connector and SMS Connector directly.

    For #4 and #5, since you do not have a Mobile App, you would need a web app that could register for Push Notifications and then you could use Azure Notification Hub.

    But given your user base, you might want to consider Azure Communication Services to send out SMS messages instead.


    Finally, in terms of architecture in general, you would want to consider the following design aspects.

    • Depending on how your users are distributed and the number of users, you could consider using a Function App or Container App to scale to all users. You could have multiple deployments of this app across regions and front them using Azure Front Door for low latency and distributed loads.
      You could also shard the database according to region to speed up queries.
    • Since you don't have an app, one way for check-in/check-out is to build a PWA that users could install as an app on their phones or just have a QR Code/Link that takes them to the web page.
    • You could consider using an Indexed View to improve query times on each check, if possible

0 additional answers

Sort by: Most helpful

Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.