Mulai menggunakan Go


Tutorial ini ditujukan bagi mereka yang baru mempelajari cara membangun aplikasi di cloud, seperti engineer dan developer web, yang ingin mempelajari konsep pengembangan aplikasi utama saat diterapkan di Google Cloud.

Tujuan

Biaya

Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:

Petunjuk dalam dokumen ini dirancang untuk menjaga penggunaan resource Anda tetap sesuai batas-batas tingkat Selalu Gratis Google Cloud. Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga. Pengguna baru Google Cloud mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, lihat Pembersihan.

Sebelum memulai

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  4. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  5. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  6. Untuk membuat database Firestore dalam mode Native, selesaikan langkah-langkah berikut:
    1. Di konsol Google Cloud, buka halaman Firestore create database.

      Buka database pembuatan Firestore

    2. Dari layar Select a Cloud Firestore mode, klik Select Native Mode.
    3. Pilih lokasi untuk database Firestore Anda. Setelan lokasi ini merupakan lokasi resource Google Cloud default untuk project Google Cloud Anda . Lokasi ini digunakan untuk layanan Google Cloud di project Google Cloud yang memerlukan setelan lokasi, khususnya, bucket Cloud Storage default dan aplikasi Cloud Run.
    4. Klik Create database.
  7. Aktifkan API Artifact Registry, Cloud Run Admin, Cloud Build, Cloud Storage, Cloud Logging, and Error Reporting.

    Mengaktifkan API

  8. Buat clone untuk repo sampel dan buka aplikasi contoh di Cloud Shell:
    Buka Cloud Shell

    Cloud Shell menyediakan akses command line ke resource Google Cloud langsung dari browser.

  9. Untuk mendownload kode contoh dan berpindah ke direktori aplikasi, klik Lanjutkan.
  10. Di Cloud Shell, konfigurasikan alat gcloud untuk menggunakan project Google Cloud baru Anda:

    # Configure gcloud for your project
    gcloud config set project PROJECT_ID

    Ganti PROJECT_ID dengan project ID Google Cloud yang Anda buat menggunakan Konsol Google Cloud.

    Google Cloud CLI adalah cara utama Anda berinteraksi dengan resource Google Cloud dari command line. Dalam tutorial ini, Anda menggunakan alat gcloud untuk men-deploy dan memantau aplikasi.

Menjalankan aplikasi Anda

  1. Build aplikasi, yang otomatis mendownload dependensi:
    go build
    
  2. Jalankan aplikasi:
    GOOGLE_CLOUD_PROJECT=PROJECT_ID ./bookshelf
    
    Ganti PROJECT_ID dengan project ID Google Cloud yang Anda buat.
  3. Di Cloud Shell, klik Web preview , lalu pilih Preview on port 8080. Tindakan ini akan membuka jendela baru dengan aplikasi yang sedang berjalan.

Men-deploy aplikasi Anda ke Cloud Run

Google Cloud menawarkan beberapa opsi untuk menjalankan kode Anda. Untuk contoh ini, Anda menggunakan Cloud Run untuk men-deploy aplikasi yang skalabel ke Google Cloud. Cloud Run tidak mengharuskan Anda mengelola server dan melakukan penskalaan secara otomatis untuk mendukung lonjakan traffic.

  1. Jalankan container dengan Cloud Run:
    gcloud run deploy bookshelf --region us-central1 --allow-unauthenticated \
    --set-env-vars="GOOGLE_CLOUD_PROJECT=PROJECT_ID" --source .

    Aplikasi Anda sekarang dapat dilihat di URL yang ditampilkan di output gcloud run:

    Service [bookshelf] revision [bookshelf-00001] has been deployed and is serving 100 percent of traffic.
    Service URL: https://bookshelf-swsmmh5s5a-uc.a.run.app
    
  2. Salin URL ke browser web untuk melihat aplikasi. Halaman beranda aplikasi rak buku

Untuk mengetahui informasi selengkapnya tentang cara men-deploy ke Cloud Run, lihat dokumentasi Cloud Run.

Mempertahankan data Anda dengan Firestore

Anda tidak dapat menyimpan informasi pada instance Cloud Run, karena informasi tersebut akan hilang jika instance dimulai ulang, dan tidak akan ada ketika instance baru dibuat. Sebagai gantinya, Anda menggunakan database tempat semua instance dapat dibaca dan ditulis.

Google Cloud menawarkan beberapa opsi untuk menyimpan data Anda. Dalam contoh ini, Anda menggunakan Firestore untuk menyimpan data setiap buku. Firestore adalah database dokumen NoSQL yang terkelola sepenuhnya, serverless, dan dapat digunakan untuk menyimpan serta mengkueri data. Firestore akan melakukan penskalaan otomatis untuk memenuhi kebutuhan aplikasi Anda, dan melakukan penskalaan hingga nol saat Anda tidak menggunakannya. Tambahkan buku pertama Anda sekarang.

  1. Untuk membuat buku bagi aplikasi yang di-deploy, klik Tambahkan buku.

    Menambahkan buku ke aplikasi Bookshelf
  2. Di kolom Title, masukkan Moby Dick.
  3. Pada kolom Author, masukkan Herman Melville.
  4. Klik Save. Sekarang ada entri ke aplikasi Bookshelf Anda.

    Entri aplikasi Moby Dick Bookshelf
  5. Di konsol Google Cloud, untuk memuat ulang halaman Firestore, klik Refresh . Data akan muncul di Firestore. Aplikasi Bookshelf menyimpan setiap buku sebagai dokumen Firestore dengan ID unik, dan semua dokumen ini disimpan dalam koleksi Firestore. Untuk keperluan tutorial ini, koleksi disebut buku. Contoh dokumen Firestore.

Firestore menyimpan buku dengan menggunakan Library Klien Firestore. Berikut adalah contoh pengambilan dokumen Firestore:


// newFirestoreDB creates a new BookDatabase backed by Cloud Firestore.
// See the firestore package for details on creating a suitable
// firestore.Client: https://godoc.org/cloud.google.com/go/firestore.
func newFirestoreDB(client *firestore.Client) (*firestoreDB, error) {
	ctx := context.Background()
	// Verify that we can communicate and authenticate with the Firestore
	// service.
	err := client.RunTransaction(ctx, func(ctx context.Context, t *firestore.Transaction) error {
		return nil
	})
	if err != nil {
		return nil, fmt.Errorf("firestoredb: could not connect: %w", err)
	}
	return &firestoreDB{
		client:     client,
		collection: "books",
	}, nil
}

// Close closes the database.
func (db *firestoreDB) Close(context.Context) error {
	return db.client.Close()
}

// Book retrieves a book by its ID.
func (db *firestoreDB) GetBook(ctx context.Context, id string) (*Book, error) {
	ds, err := db.client.Collection(db.collection).Doc(id).Get(ctx)
	if err != nil {
		return nil, fmt.Errorf("firestoredb: Get: %w", err)
	}
	b := &Book{}
	ds.DataTo(b)
	return b, nil
}

Untuk informasi lebih lanjut tentang penggunaan Firestore, lihat Menambahkan data ke Firestore.

Menyimpan upload file di Cloud Storage

Sekarang setelah Anda menambahkan buku, saatnya menambahkan gambar sampul buku. Anda tidak dapat menyimpan file di instance. {i>Database<i} bukan pilihan yang tepat untuk file gambar. Sebagai gantinya, Anda menggunakan Cloud Storage.

Cloud Storage adalah penyimpanan blob utama untuk Google Cloud. Anda dapat menggunakan Cloud Storage untuk menghosting aset aplikasi yang ingin dibagikan ke seluruh Google Cloud. Untuk menggunakan Cloud Storage, Anda perlu membuat bucket Cloud Storage, container dasar untuk menyimpan data Anda.

  1. Pada konsol Google Cloud, buka halaman Browser Cloud Storage.

    Buka halaman Browser Cloud Storage

  2. Klik Create bucket.
  3. Pada dialog Create bucket, masukkan nama untuk bucket Anda dengan menambahkan project ID Google Cloud ke string _bucket sehingga namanya tampak seperti YOUR_PROJECT_ID_bucket. Nama ini tunduk pada persyaratan nama bucket. Semua kolom lain dapat tetap memiliki nilai defaultnya.
  4. Klik Create.
  5. Setelah bucket dibuat, objek harus dibuat agar dapat diakses secara publik agar dapat dilihat pengguna. Untuk membuat objek Anda dapat diakses secara publik, lihat Membuat Data menjadi Publik.
  6. Klik Edit buku, lalu pilih gambar yang akan diupload sebagai sampul buku. Misalnya, Anda dapat menggunakan gambar domain publik ini:
    Sampul buku Moby Dick
  7. Klik Save. Anda akan dialihkan ke halaman beranda, tempat terdapat entri ke aplikasi Bookshelf Anda.
    Entri aplikasi Moby Dick Bookshelf

Aplikasi bookshelf mengirimkan file yang diupload ke Cloud Storage menggunakan Library Klien Cloud Storage.


// uploadFileFromForm uploads a file if it's present in the "image" form field.
func (b *Bookshelf) uploadFileFromForm(ctx context.Context, r *http.Request) (url string, err error) {
	f, fh, err := r.FormFile("image")
	if err == http.ErrMissingFile {
		return "", nil
	}
	if err != nil {
		return "", err
	}

	if b.StorageBucket == nil {
		return "", errors.New("storage bucket is missing: check bookshelf.go")
	}
	if _, err := b.StorageBucket.Attrs(ctx); err != nil {
		if err == storage.ErrBucketNotExist {
			return "", fmt.Errorf("bucket %q does not exist: check bookshelf.go", b.StorageBucketName)
		}
		return "", fmt.Errorf("could not get bucket: %w", err)
	}

	// random filename, retaining existing extension.
	name := uuid.Must(uuid.NewV4()).String() + path.Ext(fh.Filename)

	w := b.StorageBucket.Object(name).NewWriter(ctx)

	// Warning: storage.AllUsers gives public read access to anyone.
	w.ACL = []storage.ACLRule{{Entity: storage.AllUsers, Role: storage.RoleReader}}
	w.ContentType = fh.Header.Get("Content-Type")

	// Entries are immutable, be aggressive about caching (1 day).
	w.CacheControl = "public, max-age=86400"

	if _, err := io.Copy(w, f); err != nil {
		return "", err
	}
	if err := w.Close(); err != nil {
		return "", err
	}

	const publicURL = "https://storage.googleapis.com/%s/%s"
	return fmt.Sprintf(publicURL, b.StorageBucketName, name), nil
}

Untuk informasi selengkapnya tentang penggunaan Cloud Storage, lihat Pengantar Cloud Storage.

Memantau aplikasi menggunakan Kemampuan Observasi Google Cloud

Anda telah men-deploy aplikasi serta membuat dan memodifikasi buku. Untuk memantau peristiwa ini bagi pengguna Anda, gunakan Pengelolaan Performa Aplikasi.

Memantau log dengan Cloud Logging

  1. Di Google Cloud, buka Logs Explorer

    Buka Logs Explorer

    Anda dapat memantau aplikasi secara real time. Jika Anda mengalami masalah dengan aplikasi, ini adalah salah satu hal pertama yang harus diperiksa.

    Penampil Log Stackdriver
  2. Di menu drop-down Resource, pilih Cloud Run revision, bookshelf.

Pantau error menggunakan Error Reporting

  1. Di konsol Google Cloud, buka halaman Error Reporting.
    Buka halaman Error Reporting
    Error Reporting menandai error dan pengecualian di aplikasi Anda serta memungkinkan Anda menyiapkan pemberitahuan seputar error tersebut.
  2. Di browser, buka URL /errors di aplikasi Anda.
    YOUR_CLOUD_RUN_URL/errors

    Tindakan ini akan menghasilkan pengecualian pengujian baru dan mengirimkannya ke Kemampuan Observasi Google Cloud.

  3. Di konsol Google Cloud, kembali ke halaman Error Reporting, dan error baru akan terlihat dalam beberapa saat. Klik Auto Reload sehingga Anda tidak perlu memuat ulang halaman secara manual.

    Pesan error dari Error Reporting.

Pembersihan

Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.

Menghapus project

  1. Di konsol Google Cloud, buka halaman Manage resource.

    Buka Manage resource

  2. Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.

Langkah selanjutnya