DevOps interview : Part 4: DevOps interview Kazuhiro Watanabe on 10 deploys per day on Azure with OSS
I talked with Kazuhiro Watanabe, the CEO of Yorugata, which is known for service development for mobile.
Kazuhiro implemented a “10 deploys per day” environment using Microsoft Azure and open source products. He is a co-author of Studying Continuous Integration by CakePHP (CakePHPで学ぶ継続的インテグレーション).
Enjoy this interview!
|Tsuyoshi: Hello, Kazuhiro! Can I interview you about DevOps?|
|Tsuyoshi: I heard about you from our colleague Daisuke. I am excited to have an interview with you! I am convinced you must be a unicorn.|
|Tsuyoshi: You published a book about continuous integration, didn’t you?|
|Kazuhiro: Yes. "Studying Continuous Integration by CakePHP ", I am a co-author of this book.|
|Tsuyoshi: Why did you start "Continuous Integration"?|
|Kazuhiro: In 2012, I went to PHP MATSURI 2012 in Fukuoka. I watched Mr. Yoshiba’s presentation about Continuous Integration and Continuous Delivery. It inspired me. I did not write a test code. Sometimes, I had it. However, it was just write some test code. Its quality was not so good.
Mr. Yoshiba talked about CI/CD. When he deployed something, his Twitter account automatically tweets “Deploy!” I thought it was cool. At that time, I had a project that my customer could investment to CI. So I started a journey to the CI/CD.
|Tsuyoshi: Although this book title is Continuous Delivery, I think it is more than that. It includes “Infrastructure as Code,” “Continuous Delivery,” and so on. It is deep!|
|Kazuhiro: When I started CI, it was hard for me to create a Jenkins environment. That is why I wanted to know the typical way to implement the Continuous Integration. So I wrote it.|
|Tsuyoshi: Cool. Good try. Also, it is practical.|
|Kazuhiro: Actually, Continuous Integration was awesome. So I just went Agile.|
|Tsuyoshi: I heard that the LIVER NOTES uses Azure. Why did you start using Azure?|
|Kazuhiro: When I thought that I wanted to use Azure, a Microsoft guy said, "Would you buy a voucher for Azure?"|
|Tsuyoshi: Would you tell me your impression of Azure?|
|Kazuhiro: The term and concept of Azure are unique so that it takes a time to get used to it. For example, V1, V2, Availability set, Load balancing set. Sometimes, a storage account is automatically created or something like that stuff.|
|Tsuyoshi: What are the advantages of Azure?|
|Kazuhiro: I used to use Japanese IaaS service. However, I thought about their way of thinking about architecture for it. They pursue the availability and quality of an instance of IaaS. On Azure, they tend to use multiple servers instead of a rich single server. Of course, Azure’s availability is not low. We should design infrastructure for stability. Because sometimes, a cloud service could go down.|
|Kazuhiro: Also, the WebApps is cool. Just push something into GitHub then it automatically deploys it. Very convenient.|
|Tsuyoshi: Do you deploy PHP application to Web App?|
|Kazuhiro: No. For static application.|
|Tsuyoshi: How about IaaS on Azure? Is it the same as other clouds?|
|Kazuhiro: Yes. I use Ubuntu on Azure. Because I love Debian.|
|Tsuyoshi: Why do you like Ubuntu? I like it as well. Yoshida Pakue wore an Ubuntu t-shirt on DevOps Hackathon by Microsoft.
#NOTE: Yoshida Pakue is a Microsoft CSA who originally came from the OSS world. He is famous for Cloud and Docker in Japan. Pakue means Public Cloud Evangelist. It is pronounced Paburikku Kuraudo Ebanjerisuto in the Japanese language. So Pa-Ku-E.
|Kazuhiro: LTS is stable. Also, they implement new future quickly.|
|Tsuyoshi: Could you tell me about your application?|
|Kazuhiro: LIVER NOTES is an application that people use to share reviews of live music performances. It is for iOS. Now on beta, I am going to release it until the end of this year. When someone who came to the same music venue as you checks in, the application lets you know about the event.|
|Tsuyoshi: It is a nice design!|
|Kazuhiro: Now I want to use Azure Machine Learning shortly. However, Machine Learning is difficult, right?|
|Tsuyoshi: Azure Machine Learning is cool. I know the best tutorial ever about Azure Machine Learning. The tutorial is created by Masayuki Ohta, who is an evangelist in Japan. He will be the No. 1 evangelist in Microsoft. NOTE: 推薦システムを構築する手順書 with Azure Machine Learning>|
|Kazuhiro: Please let me know!|
|Tsuyoshi: Also, if you think that Machine Learning itself is difficult, you can still use Project Oxford. It is fun. In my opinion, Microsoft Azure is good at PaaS and SaaS. I love these. I am interested in IoT hub and Media service as well. 注: Microsoft Project Oxford|
|Kazuhiro: I am interested in this service, too! These look great. I’d like to use them. I am not an Ops guys. So I’d like to use PaaS if I can.|
|Tsuyoshi: Could you tell me the structure of your development team?|
|Kazuhiro: A product owner. He loves live music performance. He is also in charge of marketing and public relations. I am in charge of Dev of iOS and Ops. Also, we have another Dev for backend service which is created by CakePHP.|
|Tsuyoshi: Is it fun for developing in PHP?|
|Kazuhiro: When CakePHP version 3.x is released the development is much easier than that used to be. After the end of this year, PHP 7.x is going to be announced. They change the internal structure of the language. It will improve the performance.|
|Tsuyoshi: This is the same old question for me. Can you deploy your application to the production environment over ten times per day?|
|Kazuhiro: Of course I can. When I released a new iOS application, we deployed several times per day.|
|Tsuyoshi: Oh! Great! You know, my hobby is DevOps. From this perspective, I am excited about it.|
|Tsuyoshi: Could you tell me the process of deployment? From check-in your code into the repository, to deploy into production, please.?|
|Kazuhiro: First of all, send a pull request. Then Jenkins automatically builds and tests it. At the same time, the teammate reviews the request. If both are OK, we merge it and deploy to the staging environment. It is the same process for the production environment.|
|Tsuyoshi: Do you fully automate it except for review or just push the button?|
|Kazuhiro: Yes. In the case of the other project, we automate deployments of the staging environment. After finishing the story testing of the development branch, it is automatically deployed into the environment. LIVER NOTES is an iOS client with the backend servers. This type of application needs to synchronize the timing of update between the client side and the backend side.|
|Tsuyoshi: I can see the term of “Hubot.” Do you do ChatOps?|
|Kazuhiro: Yes. We use Slack for sharing information with others. The Hubot tell us about deployment or something like that stuff via Slack.
#NOTE: This screenshot is not Liver Notes; it is “Megaphone” created by his company. They use the same system for Liver Notes.
Hubot will post messages from Jenkins on Slack.
We use Pivotal Tracker for ticket tracking. If the story changes its state, the hubot tells us via Slack.
You can see the notice from Ansible as well. Ansible is a simple IT automation tool. It actualizes Infrastructure as Code.
It also posts Data Dog’s data.
You can deploy via Slack. The Hubot fires Capistrano, which is a deployment tool.
|Tsuyoshi: How wonderful!|
|Kazuhiro: Our company members work remotely. We need to gain communication so that we use Pull request and review style process.|
|Tsuyoshi: Do you automate testing?|
|Kazuhiro: Yes. Full unit testing and some parts of functional testing.|
|Tsuyoshi: How about database management?|
|Kazuhiro: CakePHP has a migration mechanism.|
|Tsuyoshi: How about Fixture like Ruby on Rails?|
|Kazuhiro: CakePHP has it as well. Sometimes, we use Mock and Fabricate, which is a data generator.|
|Tsuyoshi: PHP is cool! I am a Ruby guy. Ruby on Rails ecosystem is great. Because it has a full-stack environment for automated testing, database migration, and management. However, the other languages are not good at these like Ruby on Rails. PHP is perfect. I looked down on PHP. Now I realize that I was wrong.|
|Kazuhiro: Ha-ha. Yes. It is said that if you disrespect PHP easily, you will be beaten by them.
#NOTE: In Japan, a lot of developers disrespect PHP. For example, “PHP is not cool. The language’s grammar is not as cool as the others. It is object oriented-ish.” Now PHP is developed. So if someone tries to disrespect PHP easily, the PHP guy will beat guys who love other languages. You know he is a PHP guy. He wrote a book about the CakePHP.
|Tsuyoshi: You just do unit testing and functional testing. Generally speaking, I guess that a rollback mechanism must be important for your system.|
|Kazuhiro: It is easy. Capistrano rolls back the application code. If we want, we can roll back database as well. However, this application usually doesn’t use it. We do it on the other projects.|
|Tsuyoshi: Why don’t you need the database rollback for this system?|
|Kazuhiro: This application is for iOS. Which means we need to support old versions. We need to design the database that works fine even if we use an old version’s code base.|
|Tsuyoshi: I understand. I interviewed with Rakuten and Cookpad. The approaches are totally different. It is interesting.|
|Tsuyoshi: By the way, could you tell me about "Infrastructure as code"?|
|Kazuhiro: We use Ansible + Vagrant + Virtual Box + Capistrano.|
|Tsuyoshi: Why Ansible?|
|Kazuhiro: We used to use Chef. Ansible is good. It is simple. Chef might be good for an environment that has over ten servers.Unless that, Ansible will be easy for me. Also, it works in order.
#NOTE: Generally speaking, if you write code for a server configuration tool, it will not work in order. It defines a desirable state. When you execute the code, the tool will choose which line should be executed first. Which means it is not the same order as the code.
|Tsuyoshi: Could you tell me the challenge for Azure?|
|Kazuhiro: No. If you use IaaS, it is the same with another cloud. The problem was that I was not used to Azure the first time. I struggled to configure IaaS and design a production environment. I went to Yuya Yoshida’s house and asked him to tell me. Ha-ha.|
|Tsuyoshi: What is the advantage of Infrastructure as Code?|
|Kazuhiro: You can configure a production environment in ten minutes. If you do it several times, it is still the same.|
|Tsuyoshi: What is the outcome of Infrastructure as Code?|
|Kazuhiro: We started a preparation of the production environment on a weekend. Although we struggled, we finished the production environment on the weekend. Then we tested it on Monday, requested the approval to Apple on Tuesday. I had already developed the playbook and tested it several times using Vagrant. It was easy for me. If it had not worked, we could have changed it.|
|Tsuyoshi: I think now cloud-agnostic tools are really important. Are you interested in Docker?|
|Kazuhiro: If Docker becomes popular, people do not care about which cloud should we choose.|
|Tsuyoshi: I totally agree with it.|
|Kazuhiro: For me, Docker is like a PaaS.|
|Tsuyoshi: Yeah. Docker Hub contains a lot of images like Ruby or PHP or something like that stuff. Otto is the same.Otto provisions PaaS.|
|Kazuhiro: eally, I saw a fad about Otto on my timeline on the release day. Ha-ha.|
|Tsuyoshi: Yeah, it is hot. It is not just a successor of Vagrant but also it provisions PaaS of Ruby, deploys your application, and manages dependency of microservices. I think Hashi Corp product is cool.|
|Kazuhiro: I agree. They are cool. I use Consul on the other project. It is an application for cheering on your favorite professional baseball team. When we add an instance for a game, it will be automatically added to our cluster.
Megaphone - cheering on your favorite professional baseball team. (I am a big fan of Hanshin Tigers.)
|Tsuyoshi: Cool! Is it on Azure?|
|Kazuhiro: Unfortunately, no, ha-ha. However, CI is on Azure. By the way, I invited Michel Hashimoto to our PHP community event in Hokkaido.|
|Tsuyoshi: Are you serious?|
|Kazuhiro: 2 years ago. Vagrant became popular. I was not sure what he said. However, I just tried. He said, "OK", I cannot understand Japanese, is it OK?”|
|Kazuhiro: He is an open-hearted person. He talked about the reason he had developed Vagrant.|
|Tsuyoshi: I love Hashi Corp products. It is simple and just fits our working process. Do you use Serverspec?
3NOTE: Serverspec is a testing tool for infrastructure configuration.
|Kazuhiro: Not yet.|
|Tsuyoshi: It is good as well.|
|Kazuhiro: But it looks difficult.|
|Tsuyoshi: How about just testing about if it opens a port or tests installation of applications. It is not difficult. When I helped an Agile and DevOps installation project, the customer tried to install IaC tool of Chef. However, the infrastructure SI company resisted it. So they gave up at that time. However, they need to do acceptance testing for the infrastructure. The customer wrote code using Serverspec. They executed it in 6 minutes for 50 servers. It detects a lot of misconfigurations.|
|Kazuhiro: Cool. It must be very convenient. I’ll try it.|
|Tsuyoshi: Do you get any other outcome in the DevOps point of view?|
|Kazuhiro: We cannot see each other face to face. It will not work unless we do “something.” We can share all information via Slack.|
|Tsuyoshi: It is impressive to me that you use Pull request, review, and Hubot for communicating with each other very well.|
|Kazuhiro: Now I use Pivotal Tacker for managing the issue. We can see all information via the Slack timeline. I can ask my colleague via Slack like this, “Hey, could you deploy it, please. I need to go out immediately!” Everyone has permission to deploy.|
|Tsuyoshi: Thank you, Kazuhiro. Your case study will encourage a lot of Azure with OSS practitioners. You are a UNICORN!|
|Kazuhiro: Thank you, too. By the way, what do you do as an evangelist?|
|Tsuyoshi: I do DevOps hackathons once a month. It is fun.|
|Kazuhiro: Sounds nice! Please let me know about the next hackathon.|
|Tsuyoshi: I promise. I’ll send you the information!|
I enjoyed talking with him. Now we can see “10 deploys per day” on Azure with OSS. It works fine, and their process is well designed and cool.
Thank you, Kazuhiro! I am excited.