***OPTION 2:*** Bob can create one type of clients based on **Visual Studio Code**. Clients can be assigned to learners one to one or one to many.
>Sample client: https://training.akamai.com/ewp
**2. Software**
```
Bob ->> Alice: Do you have any prefered web server software, like apache or nginx?
Alice ->> Bob: nginx with php would be good.
Bob ->> Alice: Do you need any other softwares?
Alice ->> Bob: Yes. Please install python3 and flask, too.
```
Bob can install other softwares or tools such as **akamai cli**, based on the lab scenario.
**3. Infrastructure**
```
Alice ->> Bob: Can you upload my files(html, css, js, images, app.py,...) to the server?
Bob ->> Alice: Certainly. We will have multiple server instances for high availability. Do you want all server instances to access the same files, or should each server have its own copy?
Alice ->> Bob: All server instances should be able to read or write the same files.
```
Bob needs to use ReadWriteMany [persistent volume access mode](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes). However, Linode block storage does NOT support ReadWriteMany mode and NFS can be a good alternative. In this sample scenario, we will use NFS.
**4. Docker Image**
```
Bob ->> Alice: Do you have a custom docker image for this lab?
Alice ->> Bob: No.
Bob ->> Alice: OK. Then I will build a docker image based on public nginx docker image.
```
Bob builds a docker image and Alice validates it iteratively until they finalize the image. After the docker image is ready, Bob push it to a docker repository.
```shell
$ docker login gitea-ptl.akamai-lab.com
$ docker tag origin33 gitea-ptl.akamai-lab.com/akamai/origin33
Bob builds kubernetes yaml files and Alice validates them iteratively until they finalize the yaml files. They might need more discussion on the technical details such as health check, auto scaling, and etc.
Bob applies the yaml files to Kubernetes staging environment.