When I learned to program, I’ve never focused on web development. I was more interested in old school CLI backend programming. Furthermore, PHP never attracted me so much, but was (and still is) the programming language of the web. After some time of learning Go, I realised it was used more and more for web development, as an alternative to PHP, Python, or Ruby (on Rails). After reading some articles about web programming with Go, I was thrilled: Doing web dev just felt like writing anything else in Go, no big framework necessary, just needing the fundamentals of how web dev works (and I did lack these fundamentals). But it was really cool, not being jailed in a mysterious web framework. If you need something which the standard Go library didn’t offer (or eases the development effort), just use a third party library such as the great Gorilla Toolkits, which are specialised for web development with Go. If you want to use a “full” web framework, you can still try Revel or Beego.
So I learned some of the web fundamentals in Go, I tested responsiveness on the frontend with Bootstrap, and I felt like I could build a small dynamic websites in Go now. Then a friend told me, a colleague of him is interested in building a startup, she had a business idea and needs someone who can program a web portal. I met with her and told that this is not really a small project and I have to think about it. But I was not only thinking of doing it, I already started implementing to see if I can manage it as a side project. In the end, I already had a good architecture. I’ve used Google Cloud Platform (The Go App Engine, the MySQL database, and Cloud Storage) for hosting and got some experience with this serverless stuff.
At the moment, the project is on hold, but I’ve learned a lot. I want to keep up the work and experiment with it, so I decided to use the basis of everything I’ve learned for a simple demonstration site, implementing something like a simple microblog. As GCP is too expensive for a simple demonstration site, I switched to the free tier of Heroku. I have not yet found a free data storage. Furthermore, Heroku only offers Postgres databases, but using the clean architecture (by Uncle Bob and a Go example by Manuel Kiessling), it is not a big deal to switch from mySQL to Postgres, and, of course, I don’t have to care about high availability for this ;-).
So, this is my current project where I can experiment with web-development. Here is the Github repository, continuous deployment has been enabled and the result is shown here.
» Technologies used
Go, GCP, MySQL, Postgres, Bootstrap, Heroku