Another week, another generasi gigih reflection. This time, I want to explain week 5 of generasi gigih.

Week 5— Deployment & CI/CD

Deployment is one of the most important aspects of the software world. It's because without deployment. Impossible for other people can access our application. The deployment itself starts from the development process because we need to remember the environment setup that we use in the application. Creating personal notes is one way to remembering all our development processes that will be used in the deployment process.

In module 5, we learn about deployment using tools like vagrant and ansible. Vagrant itself is an open-source software product for building and maintaining portable virtual software development environments. So all our deployment environments should be installed in vagrant. A bit hard for me and my laptop to set up the vagrant at first, because starting both vagrant and WSL really bad for my laptop. But it's the process that I need to take, so I can deploy my application to the world. While vagrant is using to controlling our environments, Ansible is a tool to make our life more easily. Ansible is a open-source software provisioning for automating our configuration. If we using vagrant, we need to manually do all the process. Start by uploading our application to the server, installing all the dependencies, setting up the environment variable that we used, and then we can run our application inside the vagrant machine. Really a lot of processes that we need to follow, and it's really easy to forget one step and ruin everything. So ansible will step up to make our daily deployment not difficult anymore. With an ansible-playbook, we can define how our installing process works and if we want to install our application on another server. We don't need to do it manually again, just launch the ansible script, and then it's finished. really simple right. CI/CD on the other hand stands for Continous Integration and Continuous Deployment. CI/CD really simplified our deployment process so every time we push our project to the repository, our application will be automatically deployed. TravisCI is the CI/CD tool that we used in Generasi Gigih, Travis CI function is to host a continuous integration service used to build and test software projects hosted on GitHub and Bitbucket. So if our application repository is connected with the Travis CI, we can make our deployment process automatically, as simple as that. Lastly, this concept is really a new one for me, and I realize there is still a lot to learn about deployment and CI/CD. But it's really pleasurable feeling learning about the new concepts.

Module 5 Reflection —

So it's been 5 weeks in generasi gigih intermediate program, I really cant believe that this program will end soon enough. I learn a lot of new things, technology, and problem-solving skills that I cant find in another place. With a really amazing mentor that I found every week, it really motivated me to have skills like them. I believe that this program really taught me a lot of things, and the scoreboard is the least of my worry. I realize that a lot of my peers really have different level skill sets than me, and that really does not affect my optimism. However, I realize that my skill set is not good enough and there is still a lot of learning I need to do. So I need to change my mindset from now on, that there really no end to learning things. If in the future I feel already good enough in programming, I might be very wrong with my mind. Because there must be a lot person that has higher skills than me. We need to make people around us as motivation to work and learn harder. I believe that everyone starts from level 0, and it's really the effort that can differentiate level 1 from level 100.