cover

 

AWS에서 제공해주는 AI 서비스들을 어떻게 사용하는지

실제 시스템들을 구현해나가며 다양한 그림들과 코드들을 통해 친절히 설명해주는 책이다.

 

publish

 

이 책은 22년 4월에 출간한 따끈따끈한 책이지만, 원서를 찾아보니 2020년에 출시 된 책을 번역한 것이었다.

  - https://www.manning.com/books/ai-as-a-service

 

번역하면서 그동안 변경된 인터페이스들은 다시 스크린샷 뜨고 예제 코드도 손봤다고 하니

원서 출간일이 좀 되었다고 해서 걱정할 필요는 없을 것 같다.

 

reader

 

보면 알겠지만, 초보자를 위한 책은 아니다.

그리고 프론트엔드 개발자가 아닌 백엔드에 치우친 내용을 다루고 있는 책이다.

 

roadmap-1

 

roadmap-2

 

크게 3부분으로 나뉘어져 있으며

1부는 그냥 알면 좋을 내용들을 살짝 터치하면서 지나가는 내용이고

2부가 본격적인 내용들이고

3부는 앞에서 공부한 것들을 정리하는 느낌의 내용이다.

 

결론은 2부가 핵심!

 

Why

 

근본적인 질문인데,

왜 AWS AI 서비스를 가지고 이 책을 만들었는지에 대한 대답인데,

결론은 3대 Cloud 다 하면 좋았겠지만, 힘들까봐 가장 많은 사용자를 갖고 있는 AWS를 선택했다는.

 

AWS AI as a Service

 

AWS에서 제공해주는 AIaaS 플랫폼들을 보여주고 있는데,

사실 AI 관련된 것 뿐만 아니라

AI 서비스를 위한 시스템을 구축하기 위해서 필요로 하는 것들을 모두 보여주고 있는 것이 맞다.

 

AWS AI as a Service - color

 

이 책에서 아쉬운 점인데 (개인적인 취향이 많이 섞인)

manning에서 제공해주는 ebook을 보면 위 이미지와 같이 color로 나오는데, 보기에 훨씬 좋다.

이 책은 흑백이라서 좀 아쉽다.

 

grey

 

color

 

책에서 중요한 내용은 아니지만,

이런 사진들을 볼 때 흑백과 컬러의 차이는 극명하지 않나 싶다.

 

system

 

책에서 풀어가는 방식은 위와 같이

앞 부분에서 어떤 시스템을 만들고자 한다는 것을 설명해주고 시작한다.

 

arch

 

그리고 시스템 아키텍처를 보기 좋게 그림으로 표현해주어서

어떻게 구성이 되고 지금 어떤 것을 공부할 것인지 알 수 있는 점은 정말 좋은 것 같다.

 

 

총평을 하자면,

클라우드에서 제공해주는 다양한 서비스들, 특히 서버리스 서비스들을 활용해서

AI 서비스들을 어떻게 구성할 것인지 공부하고자 하는 분들에게는 정말 많은 도움이 될 것 같다.

어떤 신규 프로젝트를 진행할 때 프로토타입 또는 MVP를 만들어야 할 때에도 정말 좋을 것으로 생각된다.

 

주석이 충분하지는 않지만 제공되는 예제 파일도 있다.

  - https://github.com/hanbit/ai-as-a-service

 

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

반응형


기본 환경은

아래와 같이 준비해놓자


Minikube Install

https://www.whatwant.com/entry/Minikube-install-in-Ubuntu-1804-in-VirtualBox


Node.js Install

https://www.whatwant.com/entry/Nodejs-install-in-Ubuntu-1804




1. 준비


    - Minikube 시작해 놓고...


❯ minikube start


    - dashboard 띄워서 눈으로 보고...


❯ minikube dashboard


    - 웹서버 소스 파일 준비해놓고....


❯ nano ./server.js


var http = require('http');

var os = require('os');


var host = os.hostname();

var handleRequest = function(request, response) {

    console.log('Received request for URL: ' + request.url);

    response.writeHead(200);

    response.end('Server is running on: ' + host);

};


var www = http.createServer(handleRequest);

www.listen(8080);




2. docker 환경 맞추기


    - Minikube를 위한 docker 환경을 갖춰야 한다.


    - Minikube에서 요구하는 docker-env는 뭔지 확인해본다.


❯ minikube docker-env


export DOCKER_TLS_VERIFY="1"

export DOCKER_HOST="tcp://192.168.99.100:2376"

export DOCKER_CERT_PATH="/home/chani/.minikube/certs"

export MINIKUBE_ACTIVE_DOCKERD="minikube"


# To point your shell to minikube's docker-daemon, run:

# eval $(minikube -p minikube docker-env)


    - 뭘 해야하는지 밑에서 알려줬다.


❯ eval $(minikube -p minikube docker-env)


    - 잘 되었는지 확인해보자.


❯ docker images -a


REPOSITORY                                TAG                 IMAGE ID            CREATED             SIZE

gcr.io/k8s-minikube/storage-provisioner   v2                  9c3ca9f065bb        2 weeks ago         32.2MB

kubernetesui/dashboard                    v2.0.1              85d666cddd04        3 months ago        223MB

k8s.gcr.io/kube-proxy                     v1.18.3             3439b7546f29        3 months ago        117MB

k8s.gcr.io/kube-apiserver                 v1.18.3             7e28efa976bd        3 months ago        173MB

k8s.gcr.io/kube-scheduler                 v1.18.3             76216c34ed0c        3 months ago        95.3MB

k8s.gcr.io/kube-controller-manager        v1.18.3             da26705ccb4b        3 months ago        162MB

kubernetesui/metrics-scraper              v1.0.4              86262685d9ab        4 months ago        36.9MB

k8s.gcr.io/pause                          3.2                 80d28bedfe5d        6 months ago        683kB

k8s.gcr.io/coredns                        1.6.7               67da37a9a360        6 months ago        43.8MB

k8s.gcr.io/etcd


    - Minikube에서 쓰이는 아이들이 보이면 잘 된것이다.




3. Docker build


    - 준비되어있는 server.js 파일을 담는 docker 이미지를 만들어 보자


    - dockerfile 부터 만들어 보자.


❯ ls -al


합계 12

drwxr-xr-x 2 chani chani 4096  8월 22 04:59 .

drwxr-xr-x 3 chani chani 4096  8월 22 04:58 ..

-rw-r--r-- 1 chani chani  336  8월 22 04:59 server.js


❯ nodejs --version  


v12.18.3


❯ nano ./dockerfile


FROM node:12.18.3

EXPOSE 8080

COPY server.js .

CMD node server.js


    - 이제 빌드를 해보자.


❯ docker build -t whoru:v1 -f dockerfile .


Sending build context to Docker daemon  3.072kB

Step 1/4 : FROM node:12.18.3

12.18.3: Pulling from library/node

419e7ae5bb1e: Pull complete 

848839e0cd3b: Pull complete 

de30e8b35015: Pull complete 

258fdea6ea48: Pull complete 

ddb75eb7f1e9: Pull complete 

7ec8a0667334: Pull complete 

3366ea2fc4ca: Pull complete 

48116fadad2c: Pull complete 

27e46094f3f2: Pull complete 

Digest: sha256:d0738468dfc7cedb7d260369e0546fd7ee8731cfd67136f6023d070ad9679090

Status: Downloaded newer image for node:12.18.3

 ---> cfcf3e70099d

Step 2/4 : EXPOSE 8080

 ---> Running in 042f882d14c1

Removing intermediate container 042f882d14c1

 ---> 20836a2513a7

Step 3/4 : COPY server.js .

 ---> f0dd3d753786

Step 4/4 : CMD node server.js

 ---> Running in 252610e59ae9

Removing intermediate container 252610e59ae9

 ---> 3dcf96f4c978

Successfully built 3dcf96f4c978

Successfully tagged whoru:v1


    - 잘 만들어졌는지 확인해보자.


❯ docker images


REPOSITORY                                TAG                 IMAGE ID            CREATED              SIZE

whoru                                     v1                  3dcf96f4c978        About a minute ago   917MB

node                                      12.18.3             cfcf3e70099d        2 weeks ago          917MB

gcr.io/k8s-minikube/storage-provisioner   v2                  9c3ca9f065bb        2 weeks ago          32.2MB

kubernetesui/dashboard                    v2.0.1              85d666cddd04        3 months ago         223MB

k8s.gcr.io/kube-proxy                     v1.18.3             3439b7546f29        3 months ago         117MB

k8s.gcr.io/kube-controller-manager        v1.18.3             da26705ccb4b        3 months ago         162MB

k8s.gcr.io/kube-apiserver                 v1.18.3             7e28efa976bd        3 months ago         173MB

k8s.gcr.io/kube-scheduler                 v1.18.3             76216c34ed0c        3 months ago         95.3MB

kubernetesui/metrics-scraper              v1.0.4              86262685d9ab        4 months ago         36.9MB

k8s.gcr.io/pause                          3.2                 80d28bedfe5d        6 months ago         683kB

k8s.gcr.io/coredns                        1.6.7               67da37a9a360        6 months ago         43.8MB

k8s.gcr.io/etcd                           3.4.3-0             303ce5db0e90        10 months ago        288MB


    - 제일 위에 예쁘게 만들어져 있는 것을 볼 수 있다.





4. Pod 생성


    - 방금 만든 Docker image를 실행해 보자.


❯ kubectl run whoru --image=whoru:v1 --port=8080 --image-pull-policy=Never


pod/whoru created


    - dashboard에서 확인해볼 수 있다.



    - 물론 명령어로도 확인할 수 있다.


❯ kubectl get pods


NAME    READY   STATUS    RESTARTS   AGE

whoru   1/1     Running   0          3m28s



❯ kubectl describe pod whoru


Name:         whoru

Namespace:    default

Priority:     0

Node:         minikube/192.168.99.100

Start Time:   Sat, 22 Aug 2020 05:43:50 +0900

Labels:       run=whoru

Annotations:  <none>

Status:       Running

IP:           172.17.0.5

...




5. Service 생성


    - Pod만 가지고는 접근할 방법이 없다.

    - 연결고리 역할을 해주는 Service를 생성해보자.


❯ kubectl expose pod whoru --type=LoadBalancer


service/whoru exposed


    - 당연히 dashboard에서도 나타난다.



    - Service를 통해 접근이 가능한지 테스트 해보자.


❯ minikube service whoru


|-----------|-------|-------------|-----------------------------|

| NAMESPACE | NAME  | TARGET PORT |             URL             |

|-----------|-------|-------------|-----------------------------|

| default   | whoru |        8080 | http://192.168.99.100:31610 |

|-----------|-------|-------------|-----------------------------|

🎉  Opening service default/whoru in default browser...

 chani  /srv/workspace/server

❯ 기존 브라우저 세션에서 여는 중입니다.




다음 단계는 다음 포스팅으로~

반응형

'잘난놈되기' 카테고리의 다른 글

Docker Hub 활용  (0) 2020.11.14
SiteMap  (0) 2020.08.30
Node.js install (in Ubuntu 18.04)  (0) 2020.08.22
의자 가죽 리폼 (피아노의자, 식탁의자)  (0) 2020.05.25
인터넷 속도 측정 사이트 (넷플릭스)  (0) 2020.03.14

+ Recent posts