I will start with 10 questions from Agile Samurai book.
1. Why we are here
This is a quick reminder about why we are here, who our customers are, and why we decided to do this project in the first place.
I want to:
- Try more sophisticated plannign process.
- Create React version of my blog.
I am my own customer as usual.
My project actualy is group of projects:
- Authentification + Authorization service
- Image manager: a service for store images and its resized variants.
- Publisher framework: a service to publish post on many platforms, and blog is just one of them.
- Actual blog engine based on React.
- Learn Zurb Foundation CSS framework. Or any alternative if Zurb foundation will not be suitable for my goals.
- Learn Kubernetes.
So my goal is not only get working product but learn some new technologies.
2. Elevator pitch
Here is group of projects:
Authentification + Authorization service
For me to authenticate user in many services.
For me to store images and solve resize problem in microservice-style. This is part of project infrastructure.
For me to publish posts not only to blog but also to different social networks. It could be transformed into commercial product in future.
For me to show my posts for social networks without extended interface.
3. Design product box
I will skip this part as usual.
4. Create a NOT list
This part will be hard, because it is already a monstrous bunch of microservices. But I will try anyway.
- This is not commercial product yet.
5. Meet your neighbors
- Hello devops Kirill!
- Hello developer Kirill!
As usual I am my own devops and I want to use things like CI and tracing to make my life easier (or harder) and to learn new technoligies, so I should keep it in mind.
6. Show the solution
- Pyhton on backend (probably)
- Pgsql for metadata storage (or sqite?)
- Pod in k8s
- Nest.js on backend probably
- React app with Zurb Foundation on frontend
- Post draft saved to pgsql
- Publishing to services is probably regular tasks reading Rabbit MQ but this is questionable now. May be pgsql will be enough.
- Pod in k8s
- May be just a static site for now.
- Pod in k8s
7. Ask what keeps us up at night
First of all, I looks too complicated. Overengineering as its finest. But I have to clarify now. This is not a commercial project. It is more like enterprise-grade pet-project, so this is fine.
8. Size it up
This is a rough time estimation:
- Authentication service. There should be many ready to use open-source projects, so I can just choose and set up one. One week.
- Image service estimation is approximatley can be written in one week of regular work.
- Publicher framework is much longer and in basic version is approximately fout weeks or one month of regular work.
- React based blog is easy but I will have to learn a lot about frontend. so I estimate it as two weeks.
- I’ve recently read a post about one guy who learned Kubernetes infrastructure in one month of evening work. So I estimate infrastructure part as 2 weeks.
To summarize. Rough estimation of all work is ten weeks or two and a half month.
9. Be clear on what’s going to give.
- I wont restrict work on this project to some fixed time. Intead I will try to keep deliver some functionality regulary. Let’s call it “One man scrum”.
Here are critical features:
- I have to be able to publish my posts.
- I have to be able to show published posts on my blog.
All other feature are really optional. But as far I am not restricted in time I can continue work until I will be content with result.
I would like to keep it all running on small VPS, but there might be additional requirements. So I will set upper line to 20$ a month.
Quality must be good as it is my personal project.