Apache Mesos

**Apache Mesos** adalah proyek sumber terbuka untuk mengelola kluster komputer yang dikembangkan di University of California, Berkeley.

## Sejarah
Apache Mesos dimulai sebagai proyek penelitian di Lab RAD UC Berkeley oleh mahasiswa PhD: Benjamin Hindman, Andy Konwinski, dan Matei Zaharia, serta profesor Ion Stoica. Mereka memulai mengerjakan proyek sebagai bagian dari kursus yang diajarkan oleh David Culler. Awalnya bernama *Nexus* tetapi karena konflik dengan proyek universitas lain, diganti namanya menjadi Mesos.

Mesos pertama kali dikenalkan pada tahun 2009 (saat masih bernama *Nexus*) oleh Andy Konwinski di HotCloud '09 dalam sebuah seminar yang menyertai makalah pertama yang dipublikasikan tentang proyek tersebut.

Kemudian pada tahun 2011, proyek ini dikenalkan dalam keadaan yang lebih matang dalam seminar oleh Zaharia di simposium Usenix tentang Desain Sistem Jaringan dan Implementasi konferensi tentang makalah "*Mesos: A Platform for Fine-Grained Resource Sharing in the Data Center*" oleh Benjamin Hindman, Andy Konwinski, Zaharia Ali Ghodsi, Anthony D. Joseph, Randy Katz, Scott Shenker, Ion Stoica.

Pada 27 Juli 2016, the Apache Software Foundation mengumumkan versi 1. dengan menambahkan kemampuan untuk mendukung instansi Docker, rkt dan appc secara terpusat.

## Teknologi
Mesos menggunakan cgroups Linux untuk menyediakan isolasi untuk CPU, memori virtual, I/O dan sistem berkas. Mesos sebanding dengan penjadwalan Google Borg, platform yang sangat tertutup yang digunakan secara internal untuk mengelola dan mendistribusikan layanan Google.

### Apache Aurora
Apache Aurora adalah framework Mesos untuk layanan jangka panjang dan cron jobs, awalnya dikembangkan oleh Twitter mulai tahun 2010 dan di publikasikan pada akhir 2013. Apache Aurora dapat berskala hingga puluhan ribu server, dan memiliki banyak kesamaan dengan Borg  termasuk Domain-Specific Language (DSL) yang sangat memungkinkan untuk mengonfigurasi layanan.

### Chronos
Chronos adalah sistem seperti cron terdistribusi yang elastis dan mampu mengekspresikan ketergantungan antar pekerjaan.

### Marathon
Marathon dipromosikan untuk platform as a service atau ke ribuan server fisik dan sepenuhnya berbasis REST dan memungkinkan untuk penyebaran topologi dan ditulis dalam bahasa pemrograman.

## Pengguna
Situs jejaring sosial Twitter mulai menggunakan Mesos dan Apache Aurora pada 2010, setelah Hindman memberikan presentasi kepada sekelompok insinyur Twitter.

Airbnb mengatakan pada Juli 2013 bahwa ia menggunakan Mesos untuk menjalankan sistem pemrosesan data seperti Apache Hadoop dan Apache Spark.

Situs Website eBay menyatakan pada bulan April 2014 bahwa ia menggunakan Mesos untuk menjalankan integrasi berkelanjutan berdasarkan basis per pengembang. Mereka melakukannya dengan menggunakan plugin Mesos khusus yang memungkinkan pengembang
untuk meluncurkan contoh Jenkins pribadi mereka sendiri 

Pada bulan April 2015, diumumkan bahwa layanan Apple Siri menggunakan framework Mesos sendiri yang disebut Jarvis.

Pada Agustus 2015, diumumkan bahwa Verizon memilih DC / OS Mesosphere, yang didasarkan pada open source Apache Mesos, untuk orkestrasi layanan data center.

Pada November 2015, Yelp mengumumkan bahwa mereka telah menggunakan Mesos dan Marathon selama satu setengah tahun untuk produksi layanan.

## Dukungan komersial
Startup perangkat lunak Mesosphere Inc menjual sistem operasi data center,
sistem operasi terdistribusi, berdasarkan Apache Mesos. Pada bulan September 2015, Microsoft mengumumkan kemitraan komersial dengan Mesosphere untuk membangun penjadwalan container scheduling dan orchestration services untuk Microsoft Azure. Pada Oktober 2015, Oracle mengumumkan dukungan untuk Mesos melalui
Layanan Oracle Container yaitu Cloud Container Cloud Service.

Apache Mesos dibangun menggunakan prinsip yang sama dengan kernel Linux, hanya pada tingkat abstraksi yang berbeda. Mesos kernel berjalan di setiap mesin dan menyediakan aplikasi (mis., Hadoop, Spark, Kafka, Elasticsearch) dengan API untuk manajemen sumber daya dan penjadwalan di seluruh data center dan cloud environments.

## Dokumentasi

### Fundamental
* Mesos Architecture: Memberikan gambaran umum tentang konsep Mesos
* Video and Slides of Mesos Presentations
* Academic Papers and Project History
* Mesos Release and Support Policy

### Build / Instalasi
* *Building*: Instruksi dasar tentang kompilasi dan pemasangan Mesos.
* *Configuration*: Opsi membangun konfigurasi
* *CMake*: Perincian tentang penggunaan untuk membangun sistem CMake baru
* *Windows Support*: Keadaan dukungan Windows di Mesos

### Administrasi
* *Configuration*: Argumen baris perintah.
* *High Availability Master Setup*
* *Replicated Log*: Informasi tentang log replikasi Mesos.
* *Fault Tolerant Agent Setup*
* *Framework Rate Limiting*
* *Maintenance*: Melakukan pemeliharaan pada kluster Mesos.
* *Upgrades*: Pembaruan kluster Mesos .
* *Downgrades*: Menurunkan versi kluster Mesos.
* *Logging*
* *Monitoring / Metrics*
* *Debugging using the new CLI*
* *Operational Guide*
* *Fetcher Cache Configuration*
* *Fault Domains*
* *Performance Profiling*: Debugging masalah kinerja di Mesos.
* *Memory Profiling*: Debugging kebocoran memori potensial di Mesos.

### Pengelolaan Sumber Daya
* *Attributes and Resources*: Cara mendeskripsikan agen yang terdiri dari kluster.
* *Using Resource Roles*
* *Resource Role Weights*: Berbagi secara adil
* *Resource Role Quota*: Cara mengkonfigurasi Mesos untuk menyediakan alokasi sumber daya yang dijamin untuk digunakan pengelola
* *Reservations*: Bagaimana operator dan framework dapat memesan sumber daya pada masing-masing agen untuk digunakan setiap pengelola
* *Shared Resources*: Cara berbagi volume terus-menerus antara tugas yang dikelola oleh pelaksana berbeda pada pengelola yang sama.
* *Oversubscription*: Cara mengkonfigurasi Mesos untuk mengambil keuntungan dari sumber daya yang tidak digunakan untuk meluncurkan tugas "upaya terbaik".

### Security
* *Authentication*
* *Authorization*
* *SSL*
* *Secrets*: Mengelola keamanan di dalam Mesos.

### Containerization
* *Containerizer Overview*
* *Containerizer Internals*: Detail implementasi dari kontainer-kontainer.
* *Docker Containerizer*: Meluncurkan gambar Docker sebagai Tugas, atau sebagai Pelaksana.
* *Mesos Containerizer Containerizer defau*lt: mendukung sistem Linux dan POSIX
* *Container Images*: Mendukung gambar di containerizer Mesos
* *Docker Volume Support*
* *Nvidia GPU Support*: Cara menjalankan Mesos dengan dukungan Nvidia GPU.
* *Container Sandboxes*
* *Container Volumes*
* *Nested Container and Task Group (Pod)*

### Networking
* *Networking Overview*
* *Networking in Detail*
* *Container Network Interface (CNI)*
* *Port Mapping Isolator*

### Storage
* *Multiple Disks*: Cara mengizinkan tugas menggunakan beberapa sumber daya disk yang terisolasi
* *Persistent Volume*: Cara mengizinkan tugas mengakses sumber daya penyimpanan yang persisten
* *Container Storage*: Interface (CSI) Support

### APIs
* *HTTP Endpoints*: Titik akhir HTTP yang tersedia
* *API Client Libraries*: Daftar pustaka klien untuk API HTTP.
* *API Versioning*: Menjelaskan API HTTP dan merilis versi.
* *RecordIO*: Menjelaskan format RecordIO yang digunakan oleh titik akhir streaming API HTTP.

Membuat Frameworks
* *Framework Development Guide*: Menjelaskan cara membuat aplikasi di atas Mesos
* *Guide for Designing Highly Available Mesos Frameworks*
* *Reconciliation*: Untuk memastikan keadaan framework pada akhirnya tetap konsisten dalam menghadapi kegagalan
* *Task State Reasons*: Menjelaskan bagaimana alasan status tugas digunakan di Mesos.
* *Task Health Checking*

API References:
* *v0 Java API*
* *v0 C++ API*
* *v1 Operator HTTP API*: Komunikasi antara operator dan master / agen Mesos
* *v1 Scheduler HTTP API* ; Komunikasi antara penjadwal dan master Mesos.
* *v1 Executor HTTP API*: Menjelaskan API HTTP baru untuk komunikasi antara pelaksana dan agen Mesos.
* *Mesos Modules*: Menentukan modul Mesos untuk master, pengelola
* *Allocation Module*: Cara menulis alokasi sumber daya khusus

### Community
* *Getting Involved*
* *List of Mesos Users*
* *3rd Party Frameworks*
* *3rd Party Tools*: Pengembang dan operator.
* *Development Roadmap*
* *Design Docs*: Daftar dokumen desain untuk berbagai fitur Mesos
* *Working groups*: Daftar grup yang mengerjakan komponen yang berbeda.
* *Reporting an Issue, Improvement, or Feature*: Memulai dengan JIRA.
* *Beginner Guide for Contributors*: Mulai berkontribusi ke Mesos untuk pertama kalinya.
* *Advanced Contribution Guide*: Mempelajari alur kerja yang digunakan saat berkontribusi ke Mesos.
* *Engineering Principles and Practices*: Berfungsi sebagai seperangkat nilai tingkat proyek yang dibagikan untuk masyarakat

Style Guides:
* *Documentation Style Guide*
* *Developer Guide*: Praktik dan pola terbaik yang digunakan di Mesos
* *C++ Style Guide*
* *Clang-Format*: Pemformatan otomatis
* *Doxygen Style Guide*
* *Markdown Style Guide*
* *Testing Patterns*: Tips dan trik yang digunakan dalam tes Mesos.
* *C++ Doxygen Reference API internal*
* *Committers and Maintainers*: Daftar komuter proyek dan pemelihara komponen; berguna saat mencari umpan balik.
* *Committing*: Pedoman untuk melakukan perubahan
* *Release Guide*
* *Committer Candidate Guidelines*: Menjadi penglaju
* *Effective Code Reviewing*: Pedoman, tips, dan pembelajaran untuk bagaimana melakukan tinjauan kode yang efektif.
* *Reopening a Review*: Kebijakan seputar menghidupkan kembali ulasan di ReviewBoard.

## Lihat pula
* Borg (manajer kluster)

## Referensi

## Pranala luar
*