When learning Docker, the pattern that you will study because you use it in a company project I want to use it because it is often used! I think it can be divided into two patterns (I was the latter)
When I studied, I didn't know how to use it, and there were various parts that I understood by using it in my work. We've summarized the use cases and benefits that we found useful. I hope that as many people as possible will want to read and use it.
Create a Linux environment with Docker and put language packages etc. in it to build a development environment. The essence is that you can package an environment that can be developed under the same conditions as a Docker image no matter where you connect. If you have an image, even if you purchase another PC, you can build the same environment immediately if you install Docker, If you set up a container on the cloud such as AWS, you can start development immediately just by connecting with SSH.
It is almost similar to the above, but since it will be developed in linux, write the docker file as it is and create an image, You can publish the developed container immediately by uploading it to the cloud for containers such as ECR and GCR. Compared to deploying a product developed in your own environment on EC2 etc., there is less possibility of environmental differences and it is convenient.
You can easily create multiple environments by simply changing the instance that pushes the Docker image. Since the development environment can be distributed, project-in can be done easily, and it is also possible to create an instance for testing. It is possible to respond flexibly. At startup, I often change various modules and try them out, so Make the parts that are not changed (main logic, etc.) into one Docker image, and make only the parts that are changed into another image. Work efficiency is improved by trying the environment with the description of docker-compose and immediately discarding unnecessary containers. (If you do the same thing locally, you will need to remove the package, eliminate errors, etc., which will require a huge amount of work.)
In social games, etc., if there is an event, access will increase and access at night will decrease. If the system cannot be scaled, there is a possibility that the server may go down due to waste of resources or excessive access. By using Docker, it is possible to scale out and scale in on a container-by-container basis. It can be operated while flexibly adapting the configuration according to the access.
Since the work related to development (testing, deployment, scaling, etc.) becomes easier, you can concentrate on the product itself. It leads to reduction of overall time such as planning time to working time as well as technical aspect.
In the first place, the operation method until Docker is used is not wrong, so considering the time to newly introduce it I think it is one option for companies to receive as many orders as possible and continue the same development. In the article in 2019, 9.2% of companies are using Docker containers in production in Japan , Participate in the relevant company There are some barriers to participating in the project.
If there are no experienced members, even if 7 members learn Docker in one day, it will take one man-hour per week. Research time is required for any new technology, but there is also the above-mentioned "development can proceed without using it". The hurdles for introduction will change depending on whether this time is considered "necessary" and how many people have Docke experience in the team.
In particular, I feel that the low adoption rate in the operation phase is largely due to the lack of knowledge. Recently, at AWS events, there was a presentation of a famous company Docker adoption case, I also find cases that I find useful in LT articles held by companies. The number of use cases that can be used as a reference when adopting them as a follow-up is increasing, and I think it is a very attractive option. Although convenient, it is not a silver bullet, so you need to consider whether it is more advantageous than other technologies.
・ ** Minimize environmental differences ** and develop and operate with less stress ・ Because it can be used in all phases depending on how it is used, ** total time can be reduced ** ・ When interviewing a hiring company, it would be nice to be able to answer and answer about Docker operation.
・ Some study time is required, so if you do not intend to continue using it, the benefits are small ** ・ It is up to the company to join the recruitment team or get approval for the introduction.
★ [AWS] 7 things you need to know before Auto Scaling Amazon ECS & Docker operational knowledge to handle large-scale loads with Roma Saga RS Basic concept of scale-out ★ Why we use containers / Docker in 2018 ★ The future of containers as seen in Mastodon / Netflix Can containers become the mainstream of service development?