In this post, I’ll be reflecting on our third and final sprint towards developing and implementing an Identity and Access Management system for Thea’s Pantry. Coming out of Sprint 2, we had an almost-fully-functional proof of concept which integrated a mock frontend capable of calling out to Keycloak to require authentication, getting an access token, and passing that token to the backend for authentication and validation. Our goal for sprint 3 was to fully implement production microservices for Keycloak, the IAMBackend, and the IAMFrontend. These goals may not have been explicitly defined like that at the beginning of the sprint, but that ended up being our objective. We also wanted to have finalized documentation that explains our implementation and design choices.
Some of my personal work towards that goal was as follows:
GitLab
-
Documenting our low-level issues in GitLab and assigning them accordingly. I put additional focus/effort this sprint into properly linking related issues, blockers, and tracking various key information in comments, as opposed to just using issues as a task list. Epic
-
Document and ticket/issue any outstanding work that is necessary but out of the time constraints of this sprint / the semester. Approaching the end of the semester, there is still some necessary work to fully implement our microservices, but there is not enough time to complete it all. I have gone through and added any issues I can think of.
Backend
-
Fully implement an IAMBackend that mirrors the structure of the GuestInfoBackend. It is not yet merged, as it is not yet a fully functional MVP. That branch is here. This has included but was not limited to work such as:
-
Refactoring comments and text to apply to an IAMBackend instead of GuestInfoBackend
-
Removing files and code that does not apply to IAMBackend, such as messageBroker.js
-
Modifying backend endpoint code to finalize it
-
Updating dependencies
-
Ensuring the GitLab build processes function as expected
-
I will be tying up some loose ends and hopefully merging IAMBackend before “finishing” the semester.
Frontend
-
Fully implement an IAMFrontend that mirrors the structure of the GuestInfoFrontend. It is not yet merged, as it is not yet a fully functional MVP. That branch is here. This has included but was not limited to work such as:
-
Refactoring comments and text to apply to an IAMFrontend instead of GuestInfoFrontend
-
Updating dependencies
-
Ensuring the GitLab build processes function as expected
-
Adding and reconfiguring bin scripts as necessary
-
Doing frontend Vue work to actually create a redirect page
-
I will be tying up some loose ends and hopefully merging IAMFrontend before “finishing” the semester.
PantryKeycloak
Just providing a link to the repository because I am the only one that has touched it, all work in there was done by me. PantryKeycloak
-
Fully configure and implement a production Keycloak repository
-
Add all custom settings for the TheasPantry Realm
-
Create an entrypoint script that automatically exports and saves all changes to the realm
Documentation
-
Finalize and write a lot of documentation
I feel like this sprint was a rough one across the board. I could definitely tell people were on the home stretch and sliding towards the end of the semester. I think people did good work, and our class meetings worked well for us; we always came to agreements and had purpose. I feel like we were working very slowly though, and at times, I felt like I was taking the bulk of the issues on myself. I think I could work on that as an individual, and understand that it is not necessarily my job to make sure every single thing gets done. I am very mission-oriented, so I naturally do that, despite the cost to myself. I feel like as a team, we could have paid more attention to each other and what people’s workloads looked like. That might have allowed us to work better together and be more mindful of our own deadlines and how we can help each other.
The pattern I have chosen for this sprint is Dig Deeper. This pattern describes learning things at a level where you truly understand why they are the way they are, how they work, and how to use them. I think it is relevant because the more I tried to learn how the different services and Docker interact, the better I was able to understand and implement solutions. If I had read this prior, I may have focused more on understanding before trying to implement, as opposed to while.
From the blog Mr. Lancer 987's Blog by Mr. Lancer 987 and used with permission of the author. All other rights reserved by the author.