Berbagi teknologi

Awan asli

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Awan asli

sebuah definisi

Definisi yang lebih resmi saat ini sebagian besar berasal dari Pivotal dan Cloud Native Computing Foundation (CNCF).

1.1 Hal Penting

  • 4 poin penting:
    DevOps持续交付微服务容器化
  • Enam karakteristik:
    模块化(Modularity)可观测性(Observability)可部署性(Deployability)
    可测试性(Testability)可处理性(Disposability)可替换性(Replaceability)
  • Cloud native adalah kumpulan ide, termasuk teknologi (layanan mikro, infrastruktur tangkas) dan manajemen (DevOps, pengiriman berkelanjutan, Hukum Conway, reorganisasi, dll.). Cloud native adalah kumpulan teknologi cloud dan metode manajemen perusahaan.

1.2 CNCF

  • Teknologi cloud native membantu organisasi membangun dan menjalankan aplikasi yang dapat diskalakan secara elastis di lingkungan dinamis baru seperti public cloud, private cloud, dan hybrid cloud.
  • Teknologi representatif dari cloud native mencakup container, service mesh, layanan mikro, infrastruktur yang tidak dapat diubah, dan API deklaratif. Teknik-teknik ini memungkinkan pembangunan sistem yang digabungkan secara longgar yang toleran terhadap kesalahan, mudah dikelola, dan mudah diamati.
  • Dikombinasikan dengan otomatisasi yang andal, teknologi cloud-native memudahkan para insinyur untuk melakukan perubahan besar yang sering dan dapat diprediksi pada sistem.

2. Karakteristik teknis

2.1 Arsitektur layanan mikro:

Cloud native menganjurkan penggunaan arsitektur layanan mikro untuk membangun aplikasi, membagi aplikasi menjadi beberapa layanan kecil, independen, dan dapat diterapkan secara independen, yang masing-masing berfokus pada penyelesaian fungsi bisnis tertentu. Hal ini meningkatkan skalabilitas, fleksibilitas, dan pemeliharaan aplikasi.

2.2 Penerapan dalam container:

Aplikasi cloud-native biasanya diterapkan menggunakan teknologi container seperti Docker, yang memungkinkan penerapan lintas platform, portabel, dan konsisten dengan mengemas aplikasi dan dependensinya ke dalam image container. Kontainerisasi juga memberikan keuntungan isolasi dan pemanfaatan sumber daya, memungkinkan aplikasi berjalan lebih efisien.

2.3 Orkestrasi dinamis dan manajemen otomatis:

Nativeisasi cloud menekankan penggunaan alat dan platform otomatis (seperti Kubernetes) untuk mengatur dan mengelola aplikasi secara dinamis, secara otomatis mengelola operasi seperti penerapan container, penskalaan, peningkatan, dan pemantauan, meningkatkan fleksibilitas dan keandalan aplikasi, serta mengurangi kompleksitas operasional manual .

2.4 Penskalaan elastis:

Cloud native memungkinkan aplikasi untuk diskalakan secara elastis sesuai dengan kondisi beban. Melalui orkestrasi kontainer otomatis dan penemuan layanan, instans kontainer dapat ditambahkan atau dihapus secara dinamis untuk beradaptasi dengan perubahan beban yang berbeda dan meningkatkan kinerja aplikasi dan pemanfaatan sumber daya.

2.5 Pengiriman dan penerapan berkelanjutan:

Nativeisasi cloud menganjurkan penggunaan metode integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD) untuk mencapai pengiriman dan penerapan aplikasi yang cepat. Melalui proses pembuatan, pengujian, dan penerapan otomatis, pembaruan aplikasi dapat didorong dengan cepat dan andal ke lingkungan produksi risiko dan biaya waktu penerbitan.


Tiga tumpukan teknologi

3.1 Kontainerisasi

  • Mesin kontainer: Docker, misalnya, adalah mesin kontainer aplikasi sumber terbuka yang mengemas aplikasi dan dependensinya ke dalam image kontainer standar. Gambar kontainer dapat berjalan di lingkungan apa pun yang mendukung Docker, memastikan konsistensi aplikasi di seluruh lingkungan pengembangan, pengujian, dan produksi.
  • Runtime container: seperti containerd atau runc, bertanggung jawab atas manajemen siklus hidup container, termasuk pembuatan container, memulai, menghentikan, menghapus, dan operasi lainnya, serta interaksi dengan sumber daya host.
  • Orkestrasi container: Kubernetes (K8), misalnya, saat ini merupakan platform orkestrasi container paling populer. Kubernetes menyediakan serangkaian API dan perangkat yang kuat untuk penerapan container secara otomatis, penjadwalan, perluasan dan kontraksi, penyeimbangan beban, peningkatan berkelanjutan, dan pemulihan mandiri. . , penemuan layanan, manajemen konfigurasi, dan operasi lainnya.

3.2 Arsitektur layanan mikro

  • Layanan Mikro: Menguraikan aplikasi monolitik besar menjadi serangkaian layanan kecil dan independen. Setiap layanan berfokus pada satu fungsi bisnis dan berinteraksi melalui API. Layanan mikro berkolaborasi satu sama lain melalui mekanisme komunikasi ringan (seperti RESTful API, gRPC, dll.), yang membantu meningkatkan kecepatan pengembangan, mengurangi penggabungan, dan meningkatkan skalabilitas dan toleransi kesalahan sistem.

3.3 Komunikasi antar layanan

  • API RESTful:
    Berdasarkan protokol HTTP dan berbagai metodenya (GET, POST, PUT, DELETE, dll.), antarmuka dirancang dengan gaya arsitektur berorientasi sumber daya dan banyak digunakan dalam interaksi antar layanan mikro.
  • Bahasa Indonesia: gRPC:
    Kerangka kerja RPC (Panggilan Prosedur Jarak Jauh) tujuan umum berperforma tinggi yang dikembangkan oleh Google, berdasarkan protokol HTTP/2 dan protokol serialisasi Protocol Buffers, dan cocok untuk skenario dengan persyaratan kinerja dan efisiensi tinggi.
  • antrian pesan:
    Seperti RabbitMQ, Apache Kafka, Amazon SQS, dll., sebagai middleware komunikasi asinkron, digunakan untuk memisahkan layanan, menangani beban puncak, dan mengimplementasikan arsitektur berbasis peristiwa.

3.4 Jaring layanan

  • Teknologi jaringan layanan:
    Seperti Istio, Linkerd, Envoy, dll., terletak di antara layanan. Sebagai lapisan infrastruktur transparan, mereka bertanggung jawab atas komunikasi jaringan, perutean, keamanan, observasi, dan fungsi lain antar layanan. Jaring layanan mengabstraksi kompleksitas komunikasi antar layanan, menghilangkan kebutuhan pengembang untuk mengimplementasikan fungsi-fungsi ini dalam kode aplikasi.

3.5 Integrasi berkelanjutan dan penerapan berkelanjutan (CI/CD)

  • Alat CI/CD:
    Seperti Jenkins, GitLab CI/CD, GitHub Actions, Azure DevOps, dll., digunakan untuk mengotomatiskan proses pembuatan, pengujian, pengemasan, rilis, dan penerapan pengembangan perangkat lunak. Praktik CI/CD membantu memperpendek siklus iterasi, meningkatkan kualitas perangkat lunak, dan mengurangi kesalahan yang disebabkan oleh intervensi manual.

3.6 Infrastruktur Deklaratif

  • Konfigurasi deklaratif:
    Gunakan file konfigurasi format YAML atau JSON untuk menjelaskan status target penerapan aplikasi, seperti manifes YAML Kubernetes. Pengembang hanya perlu menentukan keadaan yang diinginkan dan sistem akan secara otomatis menangani cara mencapai keadaan ini.
  • Alat Manajemen Infrastruktur sebagai Kode (IaC):
    Seperti Terraform, CloudFormation, dll., digunakan untuk manajemen infrastruktur di seluruh platform cloud guna mencapai kontrol versi, penerapan otomatis, dan manajemen infrastruktur yang konsisten.

3.7 Rantai alat DevOps

  • Agregasi log:
    Seperti ELK Stack (Elasticsearch, Logstash, Kibana), Splunk, Datadog, dll, digunakan untuk mengumpulkan, mengurai, menyimpan, mencari, menganalisis, dan memvisualisasikan data log.
  • memantau:
    Seperti Prometheus, Grafana, New Relic, Dynatrace, dll., menyediakan pemantauan kinerja sistem dan aplikasi.
  • Jejak kesalahan:
    Seperti Sentry, Bugsnag, Rollbar, dll., digunakan untuk menangkap, menganalisis, dan mengelola pengecualian dan kesalahan selama runtime aplikasi.
  • Rekayasa Kekacauan:
    Seperti Chaos Monkey, Chaos Toolkit, dll., dengan secara proaktif memperkenalkan kesalahan di lingkungan produksi untuk menguji kinerja sistem dan kemampuan pemulihan dalam kondisi tidak normal.

3.8 Komputasi tanpa server (Tanpa Server)

  • Layanan tanpa server:
    Seperti AWS Lambda, Google Cloud Functions, Azure Functions, dll., yang memungkinkan pengembang menulis dan menjalankan cuplikan kode (fungsi) tanpa mempedulikan pengoperasian dan pemeliharaan server yang mendasarinya. Fungsi tersebut hanya dijalankan dan ditagih sesuai permintaan dipicu.

Empat skenario aplikasi

Teknologi cloud native memiliki prospek penerapan yang luas di banyak bidang, termasuk namun tidak terbatas pada:

  • Aplikasi Internet skala besar: Membangun aplikasi Internet dengan ketersediaan tinggi, kinerja tinggi, dan skalabel tinggi.
  • Bisnis keuangan: Menyediakan metode pengembangan dan penerapan aplikasi yang aman, andal, dan efisien untuk meningkatkan keandalan dan keamanan aplikasi bisnis keuangan.
  • Kecerdasan Buatan dan Data Besar: Menyediakan metode pengembangan dan penerapan aplikasi yang efisien, terukur, dan elastis untuk aplikasi AI dan data besar.
  • Internet of Things: Memproses data sensor dalam jumlah besar, mencapai penerapan cepat dan penskalaan elastis, serta meningkatkan keandalan dan pemeliharaan aplikasi Internet of Things.
  • Blockchain: Menyediakan metode pengembangan dan penerapan aplikasi yang efisien, terukur, dan elastis untuk aplikasi blockchain.

Itu saja tentang cloud native, terima kasih telah membaca!