"เจจเจตเจพเจ‚ เจฎเจนเจพเจ‚เจ•เจพเจตเจฟ" เจ…เจธเฉ€เจ‚ เจนเจพเจฅเฉ€ เจจเฉ‚เฉฐ เจญเจพเจ—เจพเจ‚ เจตเจฟเฉฑเจš เจ–เจพเจ‚เจฆเฉ‡ เจนเจพเจ‚

"เจจเจตเจพเจ‚ เจฎเจนเจพเจ‚เจ•เจพเจตเจฟ" เจ…เจธเฉ€เจ‚ เจนเจพเจฅเฉ€ เจจเฉ‚เฉฐ เจญเจพเจ—เจพเจ‚ เจตเจฟเฉฑเจš เจ–เจพเจ‚เจฆเฉ‡ เจนเจพเจ‚

เจ‡เจธ เจฒเฉ‡เจ– เจตเจฟเฉฑเจš, เจฎเฉˆเจ‚ "Epics" เจ—เฉ‡เจฎ เจจเฉ‚เฉฐ เจตเจฟเจ•เจธเจค เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจ•เจพเจฐเจœเจธเจผเฉ€เจฒ เจตเจพเจคเจพเจตเจฐเจฃ เจธเจฅเจพเจชเจค เจ•เจฐเจพเจ‚เจ—เจพ, เจ…เจคเฉ‡ เจ“เจชเจจเจซเจพเจธ เจตเจฟเฉฑเจš เจตเจฐเจคเฉ‹เจ‚ เจฒเจˆ เจขเฉเจ•เจตเฉ‡เจ‚ เจนเจฟเฉฑเจธเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจ—เฉ‡เจฎ เจจเฉ‚เฉฐ เจ–เฉเจฆ เจตเฉ€ เจคเฉ‹เฉœเจพเจ‚เจ—เจพเฅค เจฎเฉˆเจ‚ เจฒเฉ€เจจเจ•เจธ 'เจคเฉ‡ เจธเจพเจฐเฉ‡ เจนเฉ‡เจฐเจพเจซเฉ‡เจฐเฉ€ เจ•เจฐเจพเจ‚เจ—เจพ, เจฎเฉˆเจ‚ เจตเจฐเจšเฉเจ…เจฒเจฌเฉŒเจ•เจธ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจจเฉ‚เฉฐ เจฎเจฟเจจเฉ€เจ•เจฟเจŠเจฌ เจตเจฟเฉฑเจš เจคเฉˆเจจเจพเจค เจ•เจฐเจพเจ‚เจ—เจพเฅค เจฎเฉ‡เจฐเฉ€ เจ•เฉฐเจฎ เจตเจพเจฒเฉ€ เจฎเจธเจผเฉ€เจจ เจตเจฟเฉฑเจš 2 เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฐ เจ•เฉ‹เจฐ เจ…เจคเฉ‡ 12GB RAM เจนเฉˆ; เจฎเฉˆเจ‚ เจธเจฟเจธเจŸเจฎ เจกเจฟเจธเจ• เจตเจœเฉ‹เจ‚ เจ‡เฉฑเจ• SSD เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเจพ เจนเจพเจ‚เฅค เจฎเฉˆเจ‚ เจกเฉ‡เจฌเฉ€เจ…เจจ 8 เจจเฉ‚เฉฐ เจ†เจชเจฃเฉ‡ เจฎเฉเฉฑเจ– เจตเจฟเจ•เจพเจธ เจชเฉเจฐเจฃเจพเจฒเฉ€ เจฆเฉ‡ เจคเฉŒเจฐ เจคเฉ‡ เจตเจฐเจคเจพเจ‚เจ—เจพ, เจœเจฟเจธ เจตเจฟเฉฑเจš emacs, sudo, git เจ…เจคเฉ‡ เจตเจฐเจšเฉเจ…เจฒเจฌเจพเจ•เจธ เจชเฉˆเจ•เฉ‡เจœ เจธเจฅเจพเจชเจฟเจค เจ•เฉ€เจคเฉ‡ เจœเจพเจฃเจ—เฉ‡, เจฌเจพเจ•เฉ€ เจธเจญ เจ•เฉเจ GitHub เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจธเจฐเฉ‹เจคเจพเจ‚ เจคเฉ‹เจ‚ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เจฐเจ•เฉ‡ เจธเจฅเจพเจชเจฟเจค เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพเฅค เจ…เจธเฉ€เจ‚ เจ‡เจนเจจเจพเจ‚ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจจเฉ‚เฉฐ /usr/local/bin เจตเจฟเฉฑเจš เจธเจฅเจพเจชเจฟเจค เจ•เจฐเจพเจ‚เจ—เฉ‡ เจœเจฆเฉ‹เจ‚ เจคเฉฑเจ• เจ•เจฟ เจนเฉ‹เจฐ เจจเจฟเจฐเจงเจพเจฐเจค เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพเฅค เจ†เจ“ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเฉ€เจ!

เจ•เฉฐเจฎ เจ•เจฐเจจ เจฆเฉ‡ เจฎเจพเจนเฉŒเจฒ เจจเฉ‚เฉฐ เจคเจฟเจ†เจฐ เจ•เจฐเจจเจพ

เจ—เฉ‹ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจฟเจค เจ•เฉ€เจคเจพ เจœเจพ เจฐเจฟเจนเจพ เจนเฉˆ

เจ…เจธเฉ€เจ‚ เจ…เจงเจฟเจ•เจพเจฐเจค เจตเฉˆเฉฑเจฌเจธเจพเจˆเจŸ เจคเฉ‹เจ‚ เจจเจฟเจฐเจฆเฉ‡เจธเจผเจพเจ‚ เจฆเฉ€ เจชเจพเจฒเจฃเจพ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚:

$ curl -L0 https://dl.google.com/go/go1.13.5.linux-amd64.tar.gz -o go.tar.gz
$ sudo tar -C /usr/local -xzf go.tar.gz
$ echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.profile

เจ•เจพเจฐเจœเจ•เฉเจธเจผเจฒเจคเจพ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เฉ€เจคเฉ€ เจœเจพ เจฐเจนเฉ€ เจนเฉˆ:

$ mkdir -p ~/go/src/hello && cd ~/go/src/hello
$ echo 'package main

import "fmt"

func main() {
fmt.Printf("hello, worldn")
}' > hello.go
$ go build
$ ./hello
hello, world

faas-cli เจ‡เฉฐเจธเจŸเจพเจฒ เจ•เจฐเจจเจพ

เจ…เจธเฉ€เจ‚ เจ…เจงเจฟเจ•เจพเจฐเจค เจตเฉˆเฉฑเจฌเจธเจพเจˆเจŸ เจคเฉ‹เจ‚ เจจเจฟเจฐเจฆเฉ‡เจธเจผเจพเจ‚ เจฆเฉ€ เจชเจพเจฒเจฃเจพ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚:

$ curl -sSL https://cli.openfaas.com | sudo -E sh
x86_64
Downloading package https://github.com/openfaas/faas-cli/releases/download/0.11.3/faas-cli as /tmp/faas-cli
Download complete.

Running with sufficient permissions to attempt to move faas-cli to /usr/local/bin
New version of faas-cli installed to /usr/local/bin
Creating alias 'faas' for 'faas-cli'.
  ___                   _____           ____
 / _  _ __   ___ _ __ |  ___|_ _  __ _/ ___|
| | | | '_  / _  '_ | |_ / _` |/ _` ___ 
| |_| | |_) |  __/ | | |  _| (_| | (_| |___) |
 ___/| .__/ ___|_| |_|_|  __,_|__,_|____/
      |_|

CLI:
 commit:  73004c23e5a4d3fdb7352f953247473477477a64
 version: 0.11.3

เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจคเฉเจธเฉ€เจ‚ bash-completion เจจเฉ‚เฉฐ เจธเจฎเจฐเฉฑเจฅ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹:

faas-cli completion --shell bash | sudo tee /etc/bash_completion.d/faas-cli

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจฟเจค เจ…เจคเฉ‡ เจธเฉฐเจฐเจšเจฟเจค เจ•เจฐเจจเจพ

เจตเจฟเจ•เจพเจธ เจฒเจˆ, เจฎเจฟเจจเฉ€เจ•เฉ‚เจฌ เจ•เจพเจซเจผเฉ€ เจนเฉˆ, เจ‡เจธเจฒเจˆ เจ‡เจธเจจเฉ‚เฉฐ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเฉ‹ เจ…เจคเฉ‡ /usr/local/bin เจตเจฟเฉฑเจš เจ•เฉเจฌเฉ‡เจฒเฉ‡เจŸ, เจ…เจคเฉ‡ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเจจ เจฒเจˆ เจนเฉˆเจฒเจฎ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเฉ‹:

$ curl https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 -o minikube && chmod +x minikube && sudo mv minikube /usr/local/bin/
$ curl https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl -o kubectl && chmod +x kubectl && sudo mv kubectl /usr/local/bin/
$ curl https://get.helm.sh/helm-v3.0.2-linux-amd64.tar.gz | tar -xzvf - linux-amd64/helm --strip-components=1; sudo mv helm /usr/local/bin

เจฎเจฟเจจเฉ€เจ•เฉ‚เจฌ เจฒเจพเจ‚เจš เจ•เจฐเฉ‹:

$ minikube start
  minikube v1.6.2 on Debian 8.11
  Automatically selected the 'virtualbox' driver (alternates: [])
  Downloading VM boot image ...
    > minikube-v1.6.0.iso.sha256: 65 B / 65 B [--------------] 100.00% ? p/s 0s
    > minikube-v1.6.0.iso: 150.93 MiB / 150.93 MiB [-] 100.00% 5.67 MiB p/s 27s
  Creating virtualbox VM (CPUs=2, Memory=8192MB, Disk=20000MB) ...
  Preparing Kubernetes v1.17.0 on Docker '19.03.5' ...
  Downloading kubeadm v1.17.0
  Downloading kubelet v1.17.0
  Pulling images ...
  Launching Kubernetes ...  Waiting for cluster to come online ...
  Done! kubectl is now configured to use "minikube"

เจ…เจธเฉ€เจ‚ เจœเจพเจ‚เจšเจฆเฉ‡ เจนเจพเจ‚:

$ kubectl get pods --all-namespaces
NAMESPACE     NAME                               READY   STATUS    RESTARTS   AGE
kube-system   coredns-6955765f44-knlcb           1/1     Running   0          29m
kube-system   coredns-6955765f44-t9cpn           1/1     Running   0          29m
kube-system   etcd-minikube                      1/1     Running   0          28m
kube-system   kube-addon-manager-minikube        1/1     Running   0          28m
kube-system   kube-apiserver-minikube            1/1     Running   0          28m
kube-system   kube-controller-manager-minikube   1/1     Running   0          28m
kube-system   kube-proxy-hv2wc                   1/1     Running   0          29m
kube-system   kube-scheduler-minikube            1/1     Running   0          28m
kube-system   storage-provisioner                1/1     Running   1          29m

OpenFaaS เจ‡เฉฐเจธเจŸเจพเจฒ เจ•เจฐเจจเจพ

เจกเจฟเจตเฉˆเจฒเจชเจฐ เจ‡เจธ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ 2 เจจเฉ‡เจฎเจธเจชเฉ‡เจธ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจธเจฟเจซเจผเจพเจฐเจฟเจธเจผ เจ•เจฐเจฆเฉ‡ เจนเจจ:

$ kubectl apply -f https://raw.githubusercontent.com/openfaas/faas-netes/master/namespaces.yml
namespace/openfaas created
namespace/openfaas-fn created

เจนเฉˆเจฒเจฎ เจฒเจˆ เจ‡เฉฑเจ• เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจธเจผเจพเจฎเจฒ เจ•เจฐเฉ‹:

$ helm repo add openfaas https://openfaas.github.io/faas-netes/
"openfaas" has been added to your repositories

เจšเจพเจฐเจŸ เจตเจฟเฉฑเจš เจ‡เฉฐเจธเจŸเจพเจฒเฉ‡เจธเจผเจจ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจ‡เฉฑเจ• เจชเจพเจธเจตเจฐเจก เจธเฉˆเจŸ เจ•เจฐเจจ เจฆเฉ€ เจธเจฎเจฐเฉฑเจฅเจพ เจนเฉˆ, เจ†เจ“ เจ‡เจธเจจเฉ‚เฉฐ เจตเจฐเจคเฉ€เจ เจ…เจคเฉ‡ เจเจ•เจธเฉˆเจธ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ k8s เจ—เฉเจชเจค เจตเจœเฉ‹เจ‚ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ•เจฐเฉ€เจ:

$ PASSWORD=verysecurerandompasswordstring
$ kubectl -n openfaas create secret generic basic-auth --from-literal=basic-auth-user=admin --from-literal=basic-auth-password="$PASSWORD"
secret/basic-auth created

เจšเจฒเฉ‹ เจคเฉˆเจจเจพเจค เจ•เจฐเฉ€เจ:

$ helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "openfaas" chart repository
Update Complete.  Happy Helming!
$ helm upgrade openfaas --install openfaas/openfaas --namespace openfaas --set functionNamespace=openfaas-fn --set generateBasicAuth=false
Release "openfaas" does not exist. Installing it now.
NAME: openfaas
LAST DEPLOYED: Fri Dec 25 10:28:22 2019
NAMESPACE: openfaas
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
To verify that openfaas has started, run:

  kubectl -n openfaas get deployments -l "release=openfaas, app=openfaas"

เจ•เฉเจ เจธเจฎเฉ‡เจ‚ เจฌเจพเจ…เจฆ, เจ…เจธเฉ€เจ‚ เจชเฉเจฐเจธเจคเจพเจตเจฟเจค เจ•เจฎเจพเจ‚เจก เจšเจฒเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚:

$ kubectl -n openfaas get deployments -l "release=openfaas, app=openfaas"
NAME                READY   UP-TO-DATE   AVAILABLE   AGE
alertmanager        1/1     1            1           114s
basic-auth-plugin   1/1     1            1           114s
faas-idler          1/1     1            1           114s
gateway             1/1     1            1           114s
nats                1/1     1            1           114s
prometheus          1/1     1            1           114s
queue-worker        1/1     1            1           114s

เจ•เจพเจฐเจœเจ•เฉเจธเจผเจฒเจคเจพ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เฉ€เจคเฉ€ เจœเจพ เจฐเจนเฉ€ เจนเฉˆ:

$ kubectl rollout status -n openfaas deploy/gateway
deployment "gateway" successfully rolled out
$ kubectl port-forward -n openfaas svc/gateway 8080:8080 &
[1] 6985
Forwarding from 127.0.0.1:8080 -> 8080
$ echo -n $PASSWORD | faas-cli login --username admin --password-stdin
Calling the OpenFaaS server to validate the credentials...
Handling connection for 8080
WARNING! Communication is not secure, please consider using HTTPS. Letsencrypt.org offers free SSL/TLS certificates.
credentials saved for admin http://127.0.0.1:8080
$ faas-cli list
Function                        Invocations     Replicas

เจฎเฉ‹เจ‚เจ—เฉ‹เจกเจฌเฉ€ เจธเจฅเจพเจชเจค เจ•เจฐเจจเจพ

เจ…เจธเฉ€เจ‚ เจนเฉˆเจฒเจฎ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจนเจฐ เจšเฉ€เจœเจผ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚:

$ helm repo add stable https://kubernetes-charts.storage.googleapis.com/
"stable" has been added to your repositories
$ helm install stable/mongodb --generate-name
NAME: mongodb-1577466908
LAST DEPLOYED: Fri Dec 25 11:15:11 2019
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
** Please be patient while the chart is being deployed **

MongoDB can be accessed via port 27017 on the following DNS name from within your cluster:

    mongodb-1577466908.default.svc.cluster.local

To get the root password run:

    export MONGODB_ROOT_PASSWORD=$(kubectl get secret --namespace default mongodb-1577466908 -o jsonpath="{.data.mongodb-root-password}" | base64 --decode)

To connect to your database run the following command:

    kubectl run --namespace default mongodb-1577466908-client --rm --tty -i --restart='Never' --image bitnami/mongodb --command -- mongo admin --host mongodb-1577466908 --authenticationDatabase admin -u root -p $MONGODB_ROOT_PASSWORD

To connect to your database from outside the cluster execute the following commands:

    kubectl port-forward --namespace default svc/mongodb-1577466908 27017:27017 &
    mongo --host 127.0.0.1 --authenticationDatabase admin -p $MONGODB_ROOT_PASSWORD

เจ…เจธเฉ€เจ‚ เจœเจพเจ‚เจšเจฆเฉ‡ เจนเจพเจ‚:

kubectl run --namespace default mongodb-1577466908-client --rm --tty -i --restart='Never' --image bitnami/mongodb --command -- mongo admin --host mongodb-1577466908 --authenticationDatabase admin -u root -p $(kubectl get secret --namespace default mongodb-1577466908 -o jsonpath="{.data.mongodb-root-password}" | base64 --decode)
If you don't see a command prompt, try pressing enter.

> db.version();
4.0.14

เจ•เฉฐเจŸเฉ‡เจจเจฐ เจคเฉ‹เจ‚ เจฌเจพเจนเจฐ เจจเจฟเจ•เจฒเจฃ เจฒเจˆ ctrl+D เจฆเจฌเจพเจ“เฅค

emacs เจธเฉˆเฉฑเจŸเจ…เฉฑเจช เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆ

เจธเจฟเจงเจพเจ‚เจค เจตเจฟเฉฑเจš, เจธเจญ เจ•เฉเจ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจ…เจจเฉเจธเจพเจฐ เจธเฉฐเจฐเจšเจฟเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€ เจ‡เจธ เจฒเฉ‡เจ–, เจ‡เจธ เจฒเจˆ เจฎเฉˆเจ‚ เจตเฉ‡เจฐเจตเฉ‡ เจตเจฟเฉฑเจš เจจเจนเฉ€เจ‚ เจœเจพเจตเจพเจ‚เจ—เจพเฅค

เจ–เฉ‡เจก เจจเฉ‚เฉฐ เจซเฉฐเจ•เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจคเฉ‹เฉœเจจเจพ

เจซเฉฐเจ•เจธเจผเจจเจพเจ‚ เจจเจพเจฒ เจชเจฐเจธเจชเจฐ เจชเฉเจฐเจญเจพเจต http เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ เจฆเฉเจ†เจฐเจพ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, JWT เจฆเฉเจ†เจฐเจพ เจตเฉฑเจ–-เจตเฉฑเจ– เจซเฉฐเจ•เจธเจผเจจเจพเจ‚ เจฆเฉ‡ เจตเจฟเจšเจ•เจพเจฐ เจเจ‚เจก-เจŸเฉ‚-เจเจ‚เจก เจชเฉเจฐเจฎเจพเจฃเจฟเจ•เจคเจพ เจชเฉเจฐเจฆเจพเจจ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค เจฎเฉ‹เจ‚เจ—เฉŒเจกเจฌเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจŸเฉ‹เจ•เจจเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ-เจจเจพเจฒ เจ—เฉ‡เจฎ เจธเจŸเฉ‡เจŸ, เจชเจฒเฉ‡เจ…เจฐ เจกเฉ‡เจŸเจพ, เจธเจพเจฐเฉ€เจ†เจ‚ เจ—เฉ‡เจฎเจพเจ‚ เจฆเฉ€เจ†เจ‚ เจšเจพเจฒเจพเจ‚ เจฆเฉ‡ เจ•เฉเจฐเจฎ เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฒเจˆ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค เจ†เจ‰ เจธเจญ เจคเฉ‹เจ‚ เจฆเจฟเจฒเจšเจธเจช เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ 'เจคเฉ‡ เจ‡เฉฑเจ• เจกเฉ‚เฉฐเจ˜เฉ€ เจตเจฟเจšเจพเจฐ เจ•เจฐเฉ€เจ.

เจฐเจœเจฟเจธเจŸเจฐ

เจ‡เจธ เจซเฉฐเจ•เจธเจผเจจ เจฆเจพ เจ‡เจจเจชเฉเจŸ เจ—เฉ‡เจฎ เจ‰เจชเจจเจพเจฎ เจ…เจคเฉ‡ เจชเจพเจธเจตเจฐเจก เจจเจพเจฒ JSON เจนเฉˆเฅค เจœเจฆเฉ‹เจ‚ เจ‡เจธ เจซเฉฐเจ•เจธเจผเจจ เจจเฉ‚เฉฐ เจ•เจพเจฒ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจ‡เจน เจœเจพเจ‚เจš เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ เจ•เจฟ เจ‡เจน เจ‰เจชเจจเจพเจฎ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจตเจฟเฉฑเจš เจจเจนเฉ€เจ‚ เจนเฉˆ; เจœเฉ‡เจ•เจฐ เจœเจพเจ‚เจš เจธเจซเจฒ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจคเจพเจ‚ เจ‰เจชเจจเจพเจฎ เจ…เจคเฉ‡ เจชเจพเจธเจตเจฐเจก เจนเฉˆเจธเจผ เจจเฉ‚เฉฐ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ—เฉ‡เจฎ เจตเจฟเฉฑเจš เจธเจฐเจ—เจฐเจฎเฉ€ เจจเจพเจฒ เจนเจฟเฉฑเจธเจพ เจฒเฉˆเจฃ เจฒเจˆ เจฐเจœเจฟเจธเจŸเฉเจฐเฉ‡เจธเจผเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค

เจชเฉเจฐเจตเฉ‡เจธเจผ

เจซเฉฐเจ•เจธเจผเจจ เจ‡เจจเจชเฉเจŸ เจ‡เฉฑเจ• เจ—เฉ‡เจฎ เจ‰เจชเจจเจพเจฎ เจ…เจคเฉ‡ เจชเจพเจธเจตเจฐเจก เจฆเฉ‡ เจจเจพเจฒ JSON เจนเฉˆ; เจœเฉ‡เจ•เจฐ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจ‰เจชเจจเจพเจฎ เจนเฉˆ เจ…เจคเฉ‡ เจชเจพเจธเจตเจฐเจก เจฆเฉ€ เจธเจซเจฒเจคเจพเจชเฉ‚เจฐเจตเจ• เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจตเจฟเฉฑเจš เจชเจนเจฟเจฒเจพเจ‚ เจธเฉ‡เจต เจ•เฉ€เจคเฉ‡ เจ—เจ เจชเจพเจธเจตเจฐเจก เจฆเฉ€ เจชเฉเจธเจผเจŸเฉ€ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ, เจคเจพเจ‚ เจ‡เฉฑเจ• JWT เจตเจพเจชเจธ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจœเจฟเจธ เจจเฉ‚เฉฐ เจนเฉ‹เจฐ เจซเฉฐเจ•เจธเจผเจจเจพเจ‚ เจจเฉ‚เฉฐ เจชเจพเจธ เจ•เฉ€เจคเจพ เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ เจœเจฆเฉ‹เจ‚ เจ‰เจน เจนเฉเฉฐเจฆเฉ‡ เจนเจจ เจฌเฉเจฒเจพเจ‡เจ†. เจกเจพเจŸเจพเจฌเฉ‡เจธ เจตเจฟเฉฑเจš เจ•เจˆ เจธเจฐเจตเจฟเจธ เจฐเจฟเจ•เจพเจฐเจก เจตเฉ€ เจชเจพเจ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ†เจ–เจฐเฉ€ เจฒเฉŒเจ—เจ‡เจจ เจธเจฎเจพเจ‚, เจ†เจฆเจฟเฅค

เจ–เฉ‡เจกเจพเจ‚ เจฆเฉ€ เจธเฉ‚เจšเฉ€ เจตเฉ‡เจ–เฉ‹

เจ•เฉ‹เจˆ เจตเฉ€ เจ…เจฃเจ…เจงเจฟเจ•เจพเจฐเจค เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจ•เจฟเจฐเจฟเจ†เจธเจผเฉ€เจฒ เจ–เฉ‡เจกเจพเจ‚ เจจเฉ‚เฉฐ เจ›เฉฑเจก เจ•เฉ‡ เจธเจพเจฐเฉ€เจ†เจ‚ เจ–เฉ‡เจกเจพเจ‚ เจฆเฉ€ เจธเฉ‚เจšเฉ€ เจฒเจˆ เจฌเฉ‡เจจเจคเฉ€ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ‡เฉฑเจ• เจ…เจงเจฟเจ•เจพเจฐเจค เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจ•เจฟเจฐเจฟเจ†เจธเจผเฉ€เจฒ เจ—เฉ‡เจฎเจพเจ‚ เจฆเฉ€ เจธเฉ‚เจšเฉ€ เจตเฉ€ เจฆเฉ‡เจ–เจฆเจพ เจนเฉˆเฅค เจซเฉฐเจ•เจธเจผเจจ เจฆเจพ เจจเจคเฉ€เจœเจพ JSON เจนเฉˆ เจœเจฟเจธ เจตเจฟเฉฑเจš เจ—เฉ‡เจฎเจพเจ‚ เจฆเฉ€ เจธเฉ‚เจšเฉ€ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ (เจ—เฉ‡เจฎ ID, เจฎเจจเฉเฉฑเจ–เฉ€-เจชเฉœเฉเจนเจจ เจฏเฉ‹เจ— เจจเจพเจฎ, เจ†เจฆเจฟ)เฅค

เจ–เฉ‡เจก เจฐเจšเจจเจพ

เจซเฉฐเจ•เจธเจผเจจ เจธเจฟเจฐเจซ เจ…เจงเจฟเจ•เจพเจฐเจค เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ; เจ–เจฟเจกเจพเจฐเฉ€เจ†เจ‚ เจฆเฉ€ เจตเฉฑเจง เจคเฉ‹เจ‚ เจตเฉฑเจง เจธเฉฐเจ–เจฟเจ† เจจเฉ‚เฉฐ เจ‡เจจเจชเฉเจŸ 'เจคเฉ‡ เจธเจตเฉ€เจ•เจพเจฐ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจจเจพเจฒ เจนเฉ€ เจ—เฉ‡เจฎ เจฆเฉ‡ เจฎเจพเจชเจฆเฉฐเจก (เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ‡เจธ เจ—เฉ‡เจฎ เจตเจฟเฉฑเจš เจ•เจฟเจนเฉœเฉ‡ เจ…เฉฑเจ–เจฐ เจ•เจฟเจฐเจฟเจ†เจธเจผเฉ€เจฒ เจ•เจฐเจจเฉ‡ เจนเจจ, เจ–เจฟเจกเจพเจฐเฉ€เจ†เจ‚ เจฆเฉ€ เจตเฉฑเจง เจคเฉ‹เจ‚ เจตเฉฑเจง เจธเฉฐเจ–เจฟเจ†, เจ†เจฆเจฟ)เฅค เจ—เฉ‡เจฎ เจฆเจพ เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเจพ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจธเจผเจพเจฎเจฒ เจนเฉ‹เจฃ เจฒเจˆ เจ‡เฉฑเจ• เจชเจพเจธเจตเจฐเจก เจฆเฉ€ เจฎเฉŒเจœเฉ‚เจฆเจ—เฉ€ เจนเฉˆ, เจœเฉ‹ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ—เฉˆเจฐ-เจœเจจเจคเจ• เจ—เฉ‡เจฎเจพเจ‚ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค เจฎเฉ‚เจฒ เจฐเฉ‚เจช เจตเจฟเฉฑเจš, เจ‡เฉฑเจ• เจœเจจเจคเจ• เจ—เฉ‡เจฎ เจฌเจฃเจพเจˆ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค เจซเฉฐเจ•เจธเจผเจจ เจฆเจพ เจจเจคเฉ€เจœเจพ JSON เจนเฉˆ, เจœเจฟเจธ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจฐเจšเจจเจพ เจธเจซเจฒเจคเจพ เจ–เฉ‡เจคเจฐ, เจ‡เฉฑเจ• เจตเจฟเจฒเฉฑเจ–เจฃ เจ—เฉ‡เจฎ เจชเจ›เจพเจฃเจ•เจฐเจคเจพ, เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจฎเจพเจชเจฆเฉฐเจก เจธเจผเจพเจฎเจฒ เจนเจจเฅค

เจ‡เฉฑเจ• เจ—เฉ‡เจฎ เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจนเฉ‹ เจฐเจฟเจนเจพ เจนเฉˆ

เจซเฉฐเจ•เจธเจผเจจ เจธเจฟเจฐเจซ เจ…เจงเจฟเจ•เจพเจฐเจค เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ, เจ‡เจจเจชเฉเจŸ เจ—เฉ‡เจฎ เจ†เจˆเจกเฉ€ เจ…เจคเฉ‡ เจ‡เจธเจฆเจพ เจชเจพเจธเจตเจฐเจก เจนเฉˆ, เจœเฉ‡เจ•เจฐ เจ‡เจน เจ‡เฉฑเจ• เจ—เฉˆเจฐ-เจœเจจเจคเจ• เจ—เฉ‡เจฎ เจนเฉˆ, เจคเจพเจ‚ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจ—เฉ‡เจฎ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ JSON เจนเฉˆเฅค เจ…เจงเจฟเจ•เจพเจฐเจค เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจœเฉ‹ เจ—เฉ‡เจฎ เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจนเฉ‹เจ, เจ…เจคเฉ‡ เจจเจพเจฒ เจนเฉ€ เจ—เฉ‡เจฎ เจฆเฉ‡ เจธเจฟเจฐเจœเจฃเจนเจพเจฐ, เจจเฉ‚เฉฐ เจฌเจพเจ…เจฆ เจตเจฟเฉฑเจš เจ—เฉ‡เจฎ เจญเจพเจ—เฉ€เจฆเจพเจฐ เจ•เจฟเจนเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค

เจ—เฉ‡เจฎ เจ‡เจตเฉˆเจ‚เจŸเจพเจ‚ เจจเฉ‚เฉฐ เจฆเฉ‡เจ–เจฃเจพ

เจ•เฉ‹เจˆ เจตเฉ€ เจ…เจฃเจ…เจงเจฟเจ•เจพเจฐเจค เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจ…เจ•เจฟเจฐเจฟเจ†เจธเจผเฉ€เจฒ เจ—เฉ‡เจฎเจพเจ‚ เจฒเจˆ เจ‡เจตเฉˆเจ‚เจŸเจพเจ‚ เจฆเฉ€ เจธเฉ‚เจšเฉ€ เจฆเฉ€ เจฌเฉ‡เจจเจคเฉ€ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจ…เจงเจฟเจ•เจพเจฐเจค เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจ•เจฟเจฐเจฟเจ†เจธเจผเฉ€เจฒ เจ—เฉ‡เจฎ เจฒเจˆ เจ˜เจŸเจจเจพเจตเจพเจ‚ เจฆเฉ€ เจธเฉ‚เจšเฉ€ เจชเฉเจฐเจพเจชเจค เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจซเฉฐเจ•เจธเจผเจจ เจฆเจพ เจ‡เฉฑเจ• เจตเจพเจงเฉ‚ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจ‰เจน เจ‡เจตเฉˆเจ‚เจŸ เจจเฉฐเจฌเจฐ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ เจœเฉ‹ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจ•เฉ‹เจฒ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจนเฉˆเฅค เจ‡เจธ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš, เจธเฉ‚เจšเฉ€ เจตเจฟเฉฑเจš เจธเจฟเจฐเจซ เจ‰เจน เจ˜เจŸเจจเจพเจตเจพเจ‚ เจœเฉ‹ เจฌเจพเจ…เจฆ เจตเจฟเฉฑเจš เจ†เจˆเจ†เจ‚ เจนเจจ เจตเจพเจชเจธ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจœเจพเจฃเจ—เฉ€เจ†เจ‚เฅค เจธเจฎเฉ‡เจ‚-เจธเจฎเฉ‡เจ‚ 'เจคเฉ‡ เจ‡เจธ เจซเฉฐเจ•เจธเจผเจจ เจจเฉ‚เฉฐ เจฒเจพเจ‚เจš เจ•เจฐเจจ เจฆเฉเจ†เจฐเจพ, เจ‡เฉฑเจ• เจ…เจงเจฟเจ•เจพเจฐเจค เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจฆเฉ‡เจ–เจฆเจพ เจนเฉˆ เจ•เจฟ เจ—เฉ‡เจฎ เจตเจฟเฉฑเจš เจ•เฉ€ เจนเฉ‹ เจฐเจฟเจนเจพ เจนเฉˆเฅค เจ‡เจน เจซเฉฐเจ•เจธเจผเจจ เจ‡เฉฑเจ• เจเจ•เจธเจผเจจ เจฌเฉ‡เจจเจคเฉ€ เจตเฉ€ เจตเจพเจชเจธ เจ•เจฐเจฆเจพ เจนเฉˆ, เจœเจฟเจธเจฆเจพ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจ—เฉ‡เจฎ เจฆเฉ‡ เจ‡เจตเฉˆเจ‚เจŸ เจกเจฟเจธเจชเฉˆเจš เจซเฉฐเจ•เจธเจผเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจœเจตเจพเจฌ เจฆเฉ‡ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจ‡เฉฑเจ• เจ—เฉ‡เจฎ เจ‡เจตเฉˆเจ‚เจŸ เจญเฉ‡เจœเจฟเจ† เจœเจพ เจฐเจฟเจนเจพ เจนเฉˆ

เจซเฉฐเจ•เจธเจผเจจ เจธเจฟเจฐเจซ เจ—เฉ‡เจฎ เจญเจพเจ—เฉ€เจฆเจพเจฐเจพเจ‚ เจฒเจˆ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ: เจ—เฉ‡เจฎ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจเจพ, เจ‡เฉฑเจ• เจšเจพเจฒ เจฌเจฃเจพเจ‰เจฃเจพ, เจตเฉ‹เจŸ เจฆเฉ‡เจฃเจพ, เจ‡เฉฑเจ• เจŸเฉˆเจ•เจธเจŸ เจธเฉเจจเฉ‡เจนเจพ เจฒเจฟเจ–เจฃเจพ เจธเฉฐเจญเจต เจนเฉˆ เจœเฉ‹ เจ—เฉ‡เจฎ เจ‡เจตเฉˆเจ‚เจŸเจพเจ‚ เจฆเฉ€ เจธเฉ‚เจšเฉ€ เจตเจฟเฉฑเจš เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจ†เจฆเจฟเฅค
เจ…เจงเจฟเจ•เจพเจฐเจค เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจœเจฟเจธเจจเฉ‡ เจ—เฉ‡เจฎ เจจเฉ‚เฉฐ เจฌเจฃเจพเจ‡เจ† เจนเฉˆ, เจ†เจชเจฃเฉ‡ เจ†เจช เจธเจฎเฉ‡เจค, เจ—เฉ‡เจฎ เจตเจฟเฉฑเจš เจธเจพเจฐเฉ‡ เจญเจพเจ—เฉ€เจฆเจพเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจฐเฉ‹เจฒ เจตเฉฐเจกเจฃเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ, เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ‰เจธเฉ‡ เจซเฉฐเจ•เจธเจผเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ†เจชเจฃเฉ€ เจญเฉ‚เจฎเจฟเจ•เจพ เจฆเฉ€ เจชเฉเจธเจผเจŸเฉ€ เจ•เจฐเจจเฉ€ เจšเจพเจนเฉ€เจฆเฉ€ เจนเฉˆเฅค เจ‡เฉฑเจ• เจตเจพเจฐ เจธเจพเจฐเฉ€เจ†เจ‚ เจญเฉ‚เจฎเจฟเจ•เจพเจตเจพเจ‚ เจฆเฉ€ เจชเฉเจธเจผเจŸเฉ€ เจนเฉ‹เจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจ—เฉ‡เจฎ เจ†เจชเจฃเฉ‡ เจ†เจช เจจเจพเจˆเจŸ เจฎเฉ‹เจก เจตเจฟเฉฑเจš เจฌเจฆเจฒ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค

เจ–เฉ‡เจก เจฆเฉ‡ เจ…เฉฐเจ•เฉœเฉ‡

เจซเฉฐเจ•เจธเจผเจจ เจธเจฟเจฐเจซ เจ—เฉ‡เจฎ เจญเจพเจ—เฉ€เจฆเจพเจฐเจพเจ‚ เจฒเจˆ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ; เจ‡เจน เจ—เฉ‡เจฎ เจฆเฉ€ เจธเจฅเจฟเจคเฉ€, เจ–เจฟเจกเจพเจฐเฉ€เจ†เจ‚ เจฆเฉ€ เจธเฉ‚เจšเฉ€ เจ…เจคเฉ‡ เจธเฉฐเจ–เจฟเจ† (เจ‰เจชเจจเจพเจฎ), เจญเฉ‚เจฎเจฟเจ•เจพเจตเจพเจ‚ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจฆเฉ€ เจธเจฅเจฟเจคเฉ€ (เจฎเฉ‚เจต เจ•เฉ€เจคเจพ เจœเจพเจ‚ เจจเจนเฉ€เจ‚), เจ…เจคเฉ‡ เจจเจพเจฒ เจนเฉ€ เจนเฉ‹เจฐ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจฆเจฟเจ–เจพเจ‰เจ‚เจฆเจพ เจนเฉˆเฅค เจชเจฟเจ›เจฒเฉ‡ เจซเฉฐเจ•เจธเจผเจจ เจฆเฉ‡ เจจเจพเจฒ, เจธเจญ เจ•เฉเจ เจธเจฟเจฐเจซ เจ–เฉ‡เจก เจญเจพเจ—เฉ€เจฆเจพเจฐเจพเจ‚ เจฒเจˆ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ.

เจธเจฎเฉ‡เจ‚-เจธเจฎเฉ‡เจ‚ 'เจคเฉ‡ เจธเจผเฉเจฐเฉ‚ เจ•เฉ€เจคเฉ‡ เจซเฉฐเจ•เจธเจผเจจ

เจœเฉ‡เจ•เจฐ เจ—เฉ‡เจฎ เจฌเจฃเจพเจ‰เจฃ เจตเฉ‡เจฒเฉ‡ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เฉเจ เจธเจฎเฉ‡เจ‚ เจฒเจˆ เจ—เฉ‡เจฎ เจฒเจพเจ‚เจš เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจนเฉˆ, เจคเจพเจ‚ เจ‡เจน เจธเจชเจธเจผเจŸ เจซเฉฐเจ•เจธเจผเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ†เจชเจฃเฉ‡ เจ†เจช เจนเฉ€ เจธเจฐเจ—เจฐเจฎ เจ—เฉ‡เจฎเจพเจ‚ เจฆเฉ€ เจธเฉ‚เจšเฉ€ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจนเจŸเจพ เจฆเจฟเฉฑเจคเฉ€ เจœเจพเจตเฉ‡เจ—เฉ€เฅค

เจ‡เฉฑเจ• เจนเฉ‹เจฐ เจจเจฟเจฏเจฎเจฟเจค เจ•เฉฐเจฎ เจนเฉˆ เจ—เฉ‡เจฎ เจฎเฉ‹เจก เจจเฉ‚เฉฐ เจฐเจพเจค เจคเฉ‹เจ‚ เจฆเจฟเจจ เจคเฉฑเจ• เจ…เจคเฉ‡ เจตเจพเจชเจธ เจ‰เจนเจจเจพเจ‚ เจ—เฉ‡เจฎเจพเจ‚ เจฒเจˆ เจœเจผเจฌเจฐเจฆเจธเจคเฉ€ เจธเจตเจฟเจš เจ•เจฐเจจเจพ เจœเจฟเจธ เจฒเจˆ เจ‡เจน เจตเจพเจฐเฉ€ เจฆเฉ‡ เจฆเฉŒเจฐเจพเจจ เจจเจนเฉ€เจ‚ เจนเฉ‹เจ‡เจ† (เจ‰เจฆเจพเจนเจฐเจฃ เจตเจœเฉ‹เจ‚, เจ‡เฉฑเจ• เจ–เจฟเจกเจพเจฐเฉ€ เจœเจฟเจธ เจจเฉ‚เฉฐ เจ—เฉ‡เจฎ เจ‡เจตเฉˆเจ‚เจŸ 'เจคเฉ‡ เจชเฉเจฐเจคเฉ€เจ•เจฟเจฐเจฟเจ† เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจจเฉ‡ เจ•เจฟเจธเฉ‡ เจ•เจพเจฐเจจ เจ•เจฐเจ•เฉ‡ เจ†เจชเจฃเจพ เจนเฉฑเจฒ เจจเจนเฉ€เจ‚ เจญเฉ‡เจœเจฟเจ†เฅค ).

เจ˜เฉ‹เจธเจผเจฃเจพ

  • เจœเจพเจฃ เจชเจ›เจพเจฃ
  • เจตเจฟเจ•เจพเจธ เจฆเฉ‡ เจตเจพเจคเจพเจตเจฐเจฃ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจค เจ•เจฐเจจเจพ, เจ•เจพเจฐเจœ เจจเฉ‚เฉฐ เจซเฉฐเจ•เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจตเฉฐเจกเจฃเจพ
  • เจฌเฉˆเจ•เจเจ‚เจก เจ•เฉฐเจฎ
  • เจธเจพเจนเจฎเจฃเฉ‡ เจตเจพเจฒเจพ เจ•เฉฐเจฎ
  • CICD เจธเจฅเจพเจชเจค เจ•เจฐเจจเจพ, เจŸเฉˆเจธเจŸเจฟเฉฐเจ— เจฆเจพ เจ†เจฏเฉ‹เจœเจจ เจ•เจฐเจจเจพ
  • เจ‡เฉฑเจ• เจŸเฉเจฐเจพเจ‡เจฒ เจ—เฉ‡เจฎ เจธเฉˆเจธเจผเจจ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเฉ‹
  • เจจเจคเฉ€เจœเฉ‡

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹