(This story is part of the weekly assignments for my internship at Nearsoft. I hope that some of the insights I learned this week can help others in their learning journey. Previously: Month 2, Week 1.)
AWS, Cloud Computing and Our First Deploy
This week, I had the unique opportunity to dive my feet on a part of Software Development that has always been interesting for me: DevOps. Our task was to explore and research different Cloud Computing solutions and deploy the application before the end of the week.
After speaking to one of my mentors and an intensive research, we chose AWS as our service. We found that the BeansTalk service would suit us best because it would offer us a PaaS solution that would take care of most of the infra layers. Also, by using EC2 instances we would have the choice to change to an IaaS service like Elastic Compute Cloud in case we wanted to handle more layers.
By the end of the week, our first deploy was made. However, by using JHipster, we just had to run a command to deploy. The command would then package the application in “production” mode, create a Beanstalk application (with a SQL database), upload the code on S3, and start the application. So, it pretty much handled everything. However, I did learn a lot and it was fun.
Data Models and Data Systems
A few weeks before entering this internship, I bought the book “Designing Data-Intensive Applications” by Martin Kleppmann and, in an attempt of avoiding tsundoku, I started to read it. After half an hour, I felt overwhelmed and confused. At the time, I wasn’t able to directly apply or relate this new information to any project so it was difficult to understand it.
Last week, during the second week of the Building Something From Scratch Phase, we started to design the Data Model for our application. I found myself searching for terms like Database Relationships, Data Models and Query Languages. It was exciting because now I took a look at that same book and could understand much more than before, even though just a couple of weeks had passed. The difference between the first time I opened the Kleppmann book and now were two very important things:
- I was able to directly apply this knowledge to something I was doing.
- I had the help of teammates and one of my mentors advised me on a couple of topics for me to look over.
Now, I realize the importance of understanding Data Models and Databases. These give you an important toolkit to have as a software developer because, as Kleppman states, “ they have such a profound effect: not only on how the software is written, but also on how we think about the problem that we are solving.”