Mulai menggunakan Go


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

Tujuan

Biaya

Dalam dokumen ini, Anda akan 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. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

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

      Buka Firestore create database

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

    Enable the APIs

  8. Clone repo contoh dan buka aplikasi contoh di Cloud Shell:
    Buka Cloud Shell

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

  9. Untuk mendownload kode contoh dan beralih 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 akan menggunakan alat gcloud untuk men-deploy dan memantau aplikasi.

Menjalankan aplikasi Anda

  1. Build aplikasi, yang akan 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 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 menskalakan 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 kini dapat dilihat di URL yang ditampilkan dalam 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 Anda untuk melihat aplikasi. Halaman beranda aplikasi Bookshelf

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

Mempertahankan data dengan Firestore

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

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 dan tanpa server, yang memungkinkan Anda menyimpan dan membuat kueri data. Firestore otomatis diskalakan untuk memenuhi kebutuhan aplikasi Anda, dan diskalakan ke 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 Simpan. Sekarang ada entri ke aplikasi Bookshelf Anda.

    Entri aplikasi Bookshelf Moby Dick
  5. Di konsol Google Cloud, untuk memuat ulang halaman Firestore, klik Muat ulang . 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 tujuan tutorial ini, koleksi disebut buku. Contoh dokumen Firestore.

Firestore menyimpan buku 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 mengetahui informasi selengkapnya tentang penggunaan Firestore, lihat artikel Menambahkan data ke Firestore.

Menyimpan upload file di Cloud Storage

Setelah menambahkan buku, saatnya menambahkan gambar sampul buku. Anda tidak dapat menyimpan file di instance. Database bukanlah 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 di seluruh Google Cloud. Untuk menggunakan Cloud Storage, Anda perlu membuat bucket Cloud Storage, yaitu penampung 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. Di dialog Create bucket, masukkan nama untuk bucket dengan menambahkan ID project Google Cloud Anda ke string _bucket sehingga namanya terlihat seperti YOUR_PROJECT_ID_bucket. Nama ini tunduk pada persyaratan nama bucket. Semua kolom lain dapat tetap pada nilai defaultnya.
  4. Klik Create.
  5. Setelah bucket dibuat, objek harus dapat diakses secara publik agar dapat dilihat oleh pengguna. Untuk membuat objek dapat diakses secara publik, lihat Membuat Data Menjadi Publik.
  6. Klik Edit buku, lalu pilih gambar untuk diupload sebagai sampul buku Anda. Misalnya, Anda dapat menggunakan gambar domain publik ini:
    Sampul buku Moby Dick
  7. Klik Simpan. Anda akan dialihkan ke halaman beranda, tempat terdapat entri ke aplikasi Bookshelf Anda.
    Entri aplikasi Bookshelf Moby Dick

Aplikasi rak buku mengirim 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 cara menggunakan Cloud Storage, lihat pengantar Cloud Storage.

Memantau aplikasi menggunakan Google Cloud Observability

Anda telah men-deploy aplikasi, serta membuat dan mengubah buku. Untuk memantau peristiwa ini bagi pengguna, 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 tempat pertama yang harus dilihat.

    Stackdriver Log Viewer
  2. Di menu drop-down Resource, pilih Cloud Run Revision, bookshelf.

Pantau kesalahan menggunakan Pelaporan Kesalahan

  1. Di konsol Google Cloud, buka halaman Pelaporan Error.
    Buka halaman Error Reporting
    Error Reporting menyoroti error dan pengecualian di aplikasi Anda dan memungkinkan Anda menyiapkan pemberitahuan terkait error dan pengecualian 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 Google Cloud Observability.

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

    Pesan error dari Pelaporan Error.

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. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Langkah selanjutnya