To create my website, I began by building the content in HTML, utilizing text hierarchy to ensure clarity and accessibility. Next, I brought my webpage to life with CSS, adding style and polish to transform the basic HTML into a visually appealing, user-friendly experience. With these fundamental building blocks in place, I was able to create a strong foundation for my website that prioritized both functionality and aesthetics.
Deploying as a Static Website
Once I was happy with my HTML and CSS, I took the next step and decided to deploy my resume website using Azure Storage as a static website. While there are many excellent options for hosting static websites, such as Netlify and GitHub Pages, I chose Azure Storage for this particular project to gain hands-on experience with the platform and expand my skillset.
Visitor Counter with Javascript, Azure Function API and CosmosDB
To keep track of website visitors, I added a JavaScript component that communicates with an Azure Function I created. This function interacts with Azure's CosmosDB Table API, retrieving the current visitor count, adding one to account for the current view, and then storing the updated count back in the database. This allowed me to accurately track the number of visitors and gain practical experience with Azure Functions and CosmosDB. I was impressed with the flexibility and efficiency of these tools and was pleased with how seamlessly they integrated into my project.
Infrastructure as Code & CI/CD
Instead of manually configuring my resources, I defined them in a Bicep template using infrastructure as code (IaC). This approach allows developers to describe their infrastructure in a declarative manner using code, which can then be deployed and managed in a consistent and efficient way. By using IaC, I was able to save time and reduce the risk of errors in my configuration.
I also utilized GitHub for source control and set up continuous integration and deployment (CI/CD) with Github Actions for my back-end API and front-end website. CI/CD is a methodology that automates the building, testing, and deployment of code changes, allowing for faster and more reliable delivery of updates. By using CI/CD, I was able to ensure that my application is always up-to-date with the latest changes, without the need for manual intervention. This helped me save time and reduce the risk of errors in my deployments.
Conclusion
This project was not only a great learning experience, but also an opportunity to apply best practices in cloud technology and cloud-based system design. Through this work, I was able to gain a deeper understanding of tools and methodologies such as infrastructure as code and continuous integration/deployment, and I'm excited to continue building on this foundation in my future projects.