Reflective Technical Report
Introduction
This report documents my development journey throughout the project-oriented experience (POE) while creating the Event Ease application. This application is targeted at easing the organization and management of events through a cloud-based platform. The journey has involved designing, developing, and deploying the application using various Azure services and technologies. In this report, I will summarize my experience with Azure Web Apps, SQL Database, and Azure Storage, and explain how these services contributed to my design and architectural decisions.
Application Feature List
Event Ease boasts a variety of features aimed at users seeking effective event management solutions:
- User Registration and Authentication: Users can create accounts and log in securely.
- Event Creation: Users can create new events by filling out forms that capture event details like date, time, and location.
- Event Listing: A browsable list of upcoming events for users to search and register for.
- Ticketing System: Users can purchase tickets for events directly through the platform.
- Admin Dashboard: Administrators can manage events, view user registrations, and access analytics.
- Notifications: Users receive notifications via email for upcoming events and reminders.
- Data Analytics: Admins access performance analytics for events and user engagement.
Component Discussion
Azure Web App
The backbone of the Event Ease application is hosted on Azure Web App. This service was chosen for its scalability, ease of deployment, and built-in support for numerous programming languages and frameworks. It enabled rapid deployment phases under a push-and-pull model, making it easier to integrate continuous deployment practices with GitHub actions.
Alternatives: While Azure Web App was ideal for this project, alternatives such as AWS Elastic Beanstalk or Google App Engine could have been considered. However, Azure Web Apps offered a more straightforward integration with Azure SQL Database and Azure Storage, enhancing the overall efficiency of the development process.
Azure SQL Database
For storing user data, event details, and transactions, Azure SQL Database was selected due to its robust relational database capabilities, security features, and scalability. The ability to perform complex queries and transactions was critical for the ticketing system and user registration components. The automated backups and security features provided by Azure SQL Database complemented the application's critical data storage needs.
Alternatives: Alternatives include NoSQL databases such as MongoDB or Azure Cosmos DB, which could provide flexibility for managing unstructured data. However, the structured nature of the Event Ease application benefited from a relational database approach, making Azure SQL Database the ideal choice.
Azure Storage
Azure Storage was utilized for storing user-uploaded files, such as images and documents related to events. Its cost-effectiveness and durability in handling large sets of unstructured data made it the perfect choice. The Blob Storage within Azure Storage allowed seamless storage and retrieval of event brochures and related media.
Alternatives: Other options such as AWS S3 or Google Cloud Storage could have been explored. However, again, the seamless integration of Azure Storage with other Azure services justified its use for this project.
Technologies Used
The technologies used in building the Event Ease application included:
- ASP.NET Core: A powerful framework for building web apps with C#. It was chosen for its speed, simplicity, and ability to create RESTful services that cater to the modern web ecosystem.
- Angular: This front-end framework was selected for its robust tools for building dynamic single-page applications. This decision was influenced by my need for modularity and reusability in component design.
- Entity Framework Core: This ORM framework facilitated easier database interactions, allowing for cleaner code and efficient manipulation of data models.
Reflection on the Project
Reflecting on the entire project from its inception to the current state, several key insights have emerged regarding cloud-based application design, development, and deployment.
First, cloud platforms like Azure offer a myriad of services that abstract away many complexities associated with traditional hosting methods. The integration of services such as Azure SQL Database and Azure Storage simplified data management and architecture, showcasing the power of cloud-native solutions.
Second, adopting an agile methodology throughout the development cycle proved beneficial. Implementing continuous integration and continuous deployment (CI/CD) practices allowed for rapid iterations, faster feedback loops, and the ability to address issues quickly.
Lastly, this project has solidified my understanding of how vital architectural decisions are in determining the performance, security, and scalability of an application. Each service I chose significantly impacted the overall functionality and user experience of the Event Ease application.
Conclusion
The journey of developing the Event Ease application has been an invaluable learning experience. The interplay of Azure services has not only equipped me with technical skills but has also nurtured a comprehensive understanding of how to architect and design cloud-based applications efficiently. As I move forward in my career, I will take these lessons learned into future projects, especially regarding making informed decisions on technology and service selection in the cloud.