Users per year? Per day? Concurrently? 12k concurrent users is quite a lot for a dynamic system to handle and will require serious backend power regardless of "scalability" changes. Some ideas–
- Perl: Persistent code, as small and as few libraries as possible, run with uwsgi. Write tests and benchmarks from the beginning. Cache templates. Off-load everything possible to webserver. Put as much processing into the front-end (client-side JS) as possible.
- Backend: nginx, huge amount of RAM, turn off everything that isn't used for the web app.
- DB: Depends on a lot. Can users update data? Can you cache data? How complicated is the data? There is a reason DB Admins are sought after and command good salaries despite the fact that every dev can do DB Admin work; expert v dilettante.
- Backend language alternatives: all of them.
Footnote: This is under-specified and even with what you do specify it is not a beginner task. "Examinations" implies security and getting security right is harder than writing a high traffic app. A beginner will flail with these issues and have little if any success.