**Unicorn** — Ruby tilida ishlab chiqilgan bepul veb-server boʻlib, Rack ilovalarini, shu jumladan Ruby on Rails yoki Sinatra platformalarida yozilgan dasturlarni ishga tushirish uchun moʻljallangan.

Unicorn faqat UNIXga oʻxshash operatsion tizimlar (jumladan, Linux, FreeBSD, Mac OS) asosida ishga tushiriladi, chunki u vorkerlarni yaratish uchun fork (dasturiy loyiha uchun kodlar ombori)dan foydalanadi. Rubyning 1.8 va undan yuqori versiyalarini qoʻllab-quvvatlaydi, ammo chiqindi fayllarni yigʻuvchisi tufayli 2.0 dan boshlangan versiyalardan foydalanish tavsiya etiladi.Rubinius bilan muvofiqligini ishlab ishlab chiqarish jarayonida jRuby va Rubyning boshqa muqobil ilovalarini qoʻllab-quvvatlash koʻzda tutilmagan.

Ishlash prinsipi
----------------

Unicorn ishga tushirilganda, ota-ona jarayonining koʻplab klonlarini yaratadi, ularning har biridan bir tarmoqli vorker sifatida foydalaniladi. Har bir vorker bir vaqtning oʻzida faqat bitta ulanishga xizmat qiladi. Maʼlumotlarni qayta ishlab, mijozga yetkazganidan soʻng, vorker ozod qilinadi va keyingisiga xizmat koʻrsatishga tayyor boʻladi. Barcha vorkerlar bir xil umumiy rozetkaga yoki portga ulanadi. Shunday qilib, bir vaqtning oʻzida qayta ishlangan soʻrovlarning maksimal soni vorkerlar soniga teng.

Oʻziga xos xususiyatlari
------------------------

Unicornning asosiy afzalliklari quyidagilardan iborat:

* kodga ip xavfsizligini talab qilmaydigan koʻptarmoqlilik;
* tezlik bilan qayta ishga tushirish imkoniyati (uziluksiz xizmat koʻrsatishda);
* vorkerlarni alohida qayta ishga tushirish qobiliyati;
* yuqori samarali faoliyat.

Kamchiliklarga — bir vorkerga bir ulanish prinsipidan kelib chiqadigan oqibatlarni kiritish mumkin:

* Rubyning xuddi shunday ulanish miqdoriga ega boshqa veb-serverlariga nisbatan xotirani koʻp miqdorda talab etadi;
* vorkerlar mijozga javob bermaguncha band boʻlib turaveradilar (mijoz tomonidan ulanish tezligi past boʻlganda bilan juda koʻp vaqtni talab qilishi mumkin);
* veb-rozetkalarni qoʻllab-quvvatlashning sifati past.

Unicorn bilan real server konfiguratsiyasida teskari proksi -serverdan koʻpincha nginx dan foydalanish yoʻlga qoʻyilgan. Bunday konfiguratsiyalarda proksi-server ulanish tezligi past boʻlgan mijozlar bilan band vorkerlar muammosini hal qiladi, shuningdek, statik fayllarni — tasvirlar, videolar, CSS va JavaScript fayllarini tarqatish uchun sozlanadi.

Muqobillari
-----------

Amalga oshirishning muqobili — **Rainbows** boʻlib, u turli koʻptarmoqli vorkerlar modellarini qoʻllab-quvvatlaydi.

Rack bilan muvofiqligi jihatidan(Ruby va OS versiyalari bilan muvofiqligi va kod talablariga amal qilgandagina) Unicorn Rubyning boshqa veb-server ilovalari xususan WEBrick, Thin, Puma, Rainbows va hklar.bilan almashtirilishi mumkin.

Unicorn foydalanuvchilari
-------------------------

* Github

Manbalar
--------

1. ↑  „Unicorn 5.5.3" (en). *yhbt.net*. 2020-yil 13-fevralda asl nusxadan arxivlangan. Qaraldi: 2020-yil 13-fevral.
2. ↑  „Rainbows! - Rack app server for sleepy apps and slow clients" (en). *yhbt.net*. 2020-yil 13-fevralda asl nusxadan arxivlangan. Qaraldi: 2020-yil 13-fevral.
3. ↑  „Unicorn!" (en). *github.blog*. 2020-yil 13-fevralda asl nusxadan arxivlangan. Qaraldi: 2020-yil 13-fevral.