Linux Server: Memilih Distribution Yang Tepat

Lahirnya berbagai distribusi Linux memunculkan berbagai perdebatan panjang atas distribusi mana yang paling unggul.  Menimbang kemajuan teknologi perangkat keras yang ada sekarang, sebenarnya keunggulan dari sisi kinerja tidaklah jauh berbeda.  Bila ada distribusi Linux yang mengklaim distribusinya memiliki kinerja yang paling baik, hal tersebut dapat dengan mudah dengan mengubah beberapa konfigurasinya baik perangkat keras mau pun perangkat lunaknya.

Munculnya distribusi ini lebih disebabkan oleh fungsi awal dari masing - masing distribusi.  Seperti contohnya:

  • Debian muncul dengan tujuan untuk menyediakan sistem operasi yang sederhana dan stabil.  
  • Ubuntu muncul, dengan menitik beratkan pada lambatnya Debian untuk mengadopsi teknologi baru.
  • Linux Mint muncul dengan menitik beratkan Debian untuk desktop komputer yang lebih responsive, menyerupai Microsoft Windows atau pun Mac OS.
  • Fedora Core, muncul dengan tujuan menyediakan sistem operasi yang berskala enterprise .
  • Red Hat, muncul dengan tujuan memberikan rasa Fedora Core dengan dukungan resmi perusahaan.
  • Centos, muncul sebagai Red Hat yang didukung oleh komunitas.
Semua Linux menggunakan Kernel yang sama, inilah sebabnya kinerjanya tidak akan berbeda jauh.  Oleh sebab itu, memilih sebuah Linux Distribution harus dilihat dari kebutuhan dan sumber daya yang ada.

Ketika kita ingin membangun mesin berskala enterprise, kita dapat memilih Fedora Core, Red Hat atau pun Centos.  Ini tidak berarti kita tidak dapat membangun mesin enterprise dengan Debian, hanya saja, dengan Debian, kita perlu menginstall fitur enterprisenya secara terpisah, seperti contohnya SELinux.

Ketika kita ingin memiliki dukungan profesional atas mesin yang kita miliki, pergunakanlah distribusi linux yang menawarkan dukungan ini, seperti Ubuntu dan Red Hat.  Namun apa bila kita lebih memilih dukungan dalam bentuk komunitas: Debian, Fedora Core dan Centos adalah pilihannya.

Linux Centos

Centos merupakan de facto distributor linux yang populer dikalangan enterprise.  Salah satu alasan utamanya adalah SELinux yang diadopsi oleh Centos.

Centos merupakan turunan dari Red Hat, sementara Red Hat merupakan turunan dari Fedora Core. Oleh sebab itu ketiga distribution ini memiliki banyak persamaan.  Perbedaan utama dari Red Hat dan Centos adalah Centos didukung oleh komunitas, sementara Red Hat didukung oleh sebuah perusahaan.  Oleh sebab itu keputusan untuk memakai Centos atau Red Had tergantung dari jenis dukungan yang kita ingin dapatkan.

Centos, seperti halnya Red Hat dan Fedora Core, kaya akan fitur - fitur keamanan yang dibutuhkan sebuah perusahaan.  Ini tidaklah berarti Linux distribution lain tidak aman.  Hanya saja Centos telah didesign untuk kebutuhan enterprise (dengan SELinux terinstall secara default).

Ini juga mengartikan proses konfigurasi Centos sedikit lebih sulit, terlebih dibandingkan dengan Debian dan turunannya (Debian tidak memasukkan SELinux sebagai paket default-nya).

Kelebihan Centos:

  • Mengadopsi security yang lebih ketat.
  • Cocok untuk mesin berkelas enterprise.
Kekurangan:

  • Tidak mendukung semua perangkat keras, terlebih mesin lama.
  • Proses konfigurasinya yang komples.

Linux Ubuntu

Sebagai salah satu turunan Debian, segala fitur yang terdapat pada Ubuntu tidak jauh berbeda dengan Debian.  Salah satu faktor yang dapat dijadikan perhitungan untuk menggunakan Ubuntu adalah Support yang diberikannya.  Bila kita memiliki server yang bersifat komersial, kita dapat membeli support dari Canonical untuk menghadapi segala masalah.

Keunggulan Ubuntu adalah hampir semua fitur Channel Testing dan Unstable pada Debian diadopsi oleh Ubuntu.  Ini menjadikan Ubuntu unggul dalam penggunaan teknologi terbaru.  Dengan support dari Canonical, ada jaminan dari pengguna Ubuntu apabila terdapat permasalahan yang muncul dikemudian hari.

Kelebihan Ubuntu:

  • Ubuntu cepat mengadopsi teknologi baru.
  • Latar belakang Ubuntu yang didukung oleh Canonical, menjadikan Ubuntu responsif menghadapi segala permasalahan yang muncul.
  • Canonical menawarkan jasa troubleshooting yang responsif dan profesional apa bila perusahaan membutuhkan.
Kekurangan Ubuntu:
  • Sistem support yang diberikan bervariasi, kita harus cermat memilih jenis support yang ditawarkan. LTS 5 tahun.  
  • Mesin yang menggunakan Ubuntu harus mengikuti versi Ubuntunya secara konsisten.  Apa bila telah melewati masa supportnya, mesin harus di install ulang (tidak dapat lagi di upgrade).
  • Hanya mendukung mesin / perangkat dengan kategori baru.  Namun, apabila kita memiliki support dari Canonical, mereka dapat memberikan dukungan extra terhadap beberapa masalah kita.
Kesimpulan menggunakan Ubuntu adalah apa bila kita ingin selalu dapat menggunakan teknologi terbaru, Ubuntu adalah pilihannya.

XMC: xmDB Object

xmDB adalah object yang menangani koneksi database dalam sistem.

Method:

  • public static function SQL(string $SQL) : Dataset
  • public static function Fetch (Dataset $RS, $Mode=MYSQLI_ASSOC)
  • public static function Count (Dataset $RS) : int
  • public static function GetID() : int
  • public static function RowAffected() : int
Contoh penggunaannya :
<?php

$SQL = "select myString, myInt, myDate, myDecimal from myTable";
$rs = \xmDB::SQL ($SQL);
while ($row ==\xmDB::Fetch($rs))
{
    $varString = xmDB::RowString($row, "myString");
    $varString = xmDB::RowInteger($row, "myInt");
    $varDate = xmDB::RowDate($row, "myDate");
    $varDecimal = xmDB::RowDecimal($row, "myDecimal");
}

$SQL = "insert into myData (id, name) values (1, 'test')";
\xmDB::SQL ($SQL);

?>

XMC: xmUser Object (Replaced by xmSession)

xmUser adalah object yang menyimpan data dari user yang sedang melakukan akses ke dalam sistem.

Method:
  • static function SubAtomic($AtomicName, $Collection = false) : xmSubAtomic 
  • static function LoadSubAtomic(string $SubAtomicName) : void


XMC: hybrid\System\User\Account

hybrid\System\User\Account merupakan Subatomic Object default untuk mengakses data Profile dari sebuah Account

Method:
  • Property:
    • string AccountID

  • Authentication
    • function ValidatePassword (string $Password) : bool
    • function ChangePassword (string $OldPassword, string $NewPassword) : bool

XMC: xmSession Object

xmSession adalah penerus dari xmUser.  xmSession memiliki semua fitur dalam xmUser untuk menjaga kompatibilitas XMC dengan object - object sebelumnya.

Method:
  • Authentication
    • static function Validate (string $Account, string $Password) : bool
    • static function ValidateSession(string $SessionID) : bool
    • static function ValidateToken(string $TokenID, string $SessionID) : bool
    • static function ValidateKey(string $Key) : bool
    • static function CreateCaptcha(string $Code = "XXXX") : string
    • static function ValidateCaptcha(string $Code = "XXXX") : bool
    • static function CreateSession(int $length=15) : string
    • static function InstallToken(int $length=15) : string
    • static function RemoveKey(string $Key) : void
  • System
    • static function LoadSubAtomic(string $SubAtomicName) : void
    • static function SubAtomic (string $SubAtomic, bool $Collection = false) : xmSubAtomic
    • static function Atomic (string $AtomicName, string $AtomicFolder = ".") : xmAtomic

XMC: SubAtomic Object Collection

Deklarasi SubAtomicCollection
<?php

    class ObjectNameCollection extends \xmc\xmSubAtomicCollection
    {
        function  NewObject() { return new \atomic\ObjectMode\ObjectNamespace\ObjectName(); }
        function AutoRun($Param)
        { 
            $RST = "";
            if ($Param=="LIST.HEADER")
            {
            }
            return $RST;
        }
    }

?>
Cara mengambil data dari Database oleh Internal SubAtomicCollection
<?php
    
function InternalSubAtomicCollection($Param)
{ 
    $SQLFilter = "`table_name`.column_name='filter'";
    $this->SQLFilter($SQLFilter);
    $this->SQLOrder("`table_name`.column_name"); 
    $this->Query();
    foreach ($this->SubAtomic as $obj)        
    {
        // Process Data
    }
}

?>
Cara mengambil data dari Database melalui SubAtomicCollection
<?php

$objCol = xmUser::SubAtomic("atomic\\objectType\\ObjectName", true);

// Atau

xmUser::LoadSubAtomic("atomic\\objectType\\ObjectName");
$objCol = new \atomic\objectType\ObjectName();

// Atau

$objCol = xmSession::SubAtomic("atomic\\objectType\\ObjectName" , true);

// Atau

xmSession::LoadSubAtomic("atomic\\objectType\\ObjectName");
$objCol = new \atomic\objectType\ObjectName();


$SQLFilter = "`table_name`.column_name='filter'";
$objCol->SQLFilter($SQLFilter);
$objCol->SQLOrder("`table_name`.column_name"); 
$objCol->Query();
foreach ($objCol->SubAtomic as $obj)        
{
    // Process Data
}

?>

XMC: Eye Controller

Terdapat 2 metoda untuk membentuk sebuah Eye Controller:

  1. melalui xmUser
  2. melalui xmContent
Contoh Eye Controller dengan xmUser

<?php

$xmEye = xmUser::Eye('skin.name');
$xmEye->SetVCom("CONTENT_TAG", "/path/to/component");

return $xmEye;

?>
Contoh Eye Controller dengan xmContent
<?php

xmContent::SetEye('skin.name');
xmContent::SetVCom("CONTENT_TAG", "/path/to/component");

return xmContent::$Eye;

?>

XMC: Blind Controller

Terdapat 2 metoda untuk membentuk sebuah Blind Controller:
  1. melalui xmUser 
  2. melalui xmContent
Contoh Eye Controller dengan xmUser

<?php

$xmBlind = new \xmc\xmBlind();
$object = xmSession::SubAtomic("atomic\\objectType\\ObjectName");
return $xmBlind;

?>
Contoh Eye Controller dengan xmContent
<?php

xmContent::SetBlind();
return xmContent::$Blind;

?>

XMC: SubAtomic Object

SubAtomic Object merupakan turunan dari xmSubAtomic.  SubAtomic memiliki 3 Mode:

  • Hybrid, object yang dapat diakses dalam public dan private environment
  • Secure, object yang hanya dapat diakses dalam private environment
  • Share, object yang hanya dapat diakses dalam public environment

Berikut ini cara deklarasinya:

<?php

namespace atomic\ObjectMode\ObjectNamespace;
if (!class_exists('\\atomic\\ObjectMode\\ObjectNamespace\\ObjectName'))
{
    class ObjectName extends \xmc\xmSubAtomic
    {
        function __construct()
        {
            parent::__construct();
            
            $this->PrimaryTableName = "table_name";
            $this->SystemDB = false;
            $this->Add();
        }

        function AutoRun($Param) { return ""; }

        function SQLFunction($counter = true, $Where = "", $Backup = false)
        {
        }

        function Add()
        {
            parent::Add();
        }

        function ExecuteDetail($Command = "SAVE")
        {

        }

        function LoadData ($row)    
        {

        }

        function Search($ID, $LoadDetail = true, $SearchBy = "ID")
        {

        } 
    }

}    
    
?>

XMC Framework

XMC Framework adalah sebuah n-tier framework untuk PHP.  Saat ini XMC Framework untuk Python sedang dikembangkan mengingat terdapat beberapa sisi dimana Python memiliki kinerja yang lebih baik dibandingkan dengan PHP.  Tujuan akhirnya dari XMC Framework adalah sebagai framework untuk mengembangkan applikasi yang paling optimal.

Framework ini dikembangkan semenjak tahun 2007. Tujuan framework ini adalah untuk menciptakan applikasi yang lebih terkontrol, integrated, fleksibel dan mudah dimodifikasi.  Meskipun deminan XMC Framework termasuk framework yang masih sangat baru.  Masih terdapat banyak hal yang perlu dikembangkan dalam XMC Framework.

XMC Framework telah teruji penggunaannya pada Apache Web Server dengan PHP 5.2 - 5.6.

XMC Framework memiliki visi sebagai:

  • Framework yang dapat menyatukan kelebihan dari berbagai bahasa.
  • Framework yang terintegrasi dengan sistem yang dibuat.
  • Framework yang teroptimasi kinerja dan keamanannya.
  • Framework yang dinamis.