<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Azizdev's Blog]]></title><description><![CDATA[Azizdev's Blog]]></description><link>https://blog.isroilov.uz</link><generator>RSS for Node</generator><lastBuildDate>Wed, 13 May 2026 06:04:50 GMT</lastBuildDate><atom:link href="https://blog.isroilov.uz/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[🚀 Horizontal vs Vertical Scaling — sodda tushuntirish]]></title><description><![CDATA[Backend’da yuklama oshganda, tizimni kengaytirish uchun 2 ta yo‘l bor:

📈 Vertical Scaling (Scale Up)


👉 Bitta serverni kuchaytirasiz
Masalan:

2 core → 8 core

8GB RAM → 32GB RAM


✅ Afzalliklari:]]></description><link>https://blog.isroilov.uz/horizontal-vs-vertical-scaling-sodda-tushuntirish</link><guid isPermaLink="true">https://blog.isroilov.uz/horizontal-vs-vertical-scaling-sodda-tushuntirish</guid><dc:creator><![CDATA[Azizbek Isroilov]]></dc:creator><pubDate>Wed, 08 Apr 2026 12:00:22 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6875dbf585e7bd77b0faed73/2753293a-dfcf-4e27-ae11-a38319b1644b.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Backend’da yuklama oshganda, tizimni kengaytirish uchun 2 ta yo‘l bor:</p>
<hr />
<h2>📈 Vertical Scaling (Scale Up)</h2>
<img src="https://cdn.hashnode.com/uploads/covers/6875dbf585e7bd77b0faed73/91e24d4b-3f73-4c0c-9ad8-d1f32017fef7.png" alt="" style="display:block;margin:0 auto" />

<p>👉 Bitta serverni kuchaytirasiz</p>
<p>Masalan:</p>
<ul>
<li><p>2 core → 8 core</p>
</li>
<li><p>8GB RAM → 32GB RAM</p>
</li>
</ul>
<h3>✅ Afzalliklari:</h3>
<ul>
<li><p>Oson</p>
</li>
<li><p>Tez implement</p>
</li>
</ul>
<h3>❌ Kamchiliklari:</h3>
<ul>
<li><p>Limit bor</p>
</li>
<li><p>Single point of failure</p>
</li>
</ul>
<hr />
<h2>🌐 Horizontal Scaling (Scale Out)</h2>
<img src="https://miro.medium.com/1%2A3fJ-HheX5a7i1cm5qUObWQ.jpeg" alt="Image" style="display:block;margin:0 auto" />

<p>👉 Serverlar sonini ko‘paytirasiz</p>
<p>Masalan:</p>
<ul>
<li>1 server → 5 server</li>
</ul>
<p>Load balancer requestlarni taqsimlaydi.</p>
<h3>✅ Afzalliklari:</h3>
<ul>
<li><p>Cheksizga yaqin scale</p>
</li>
<li><p>High availability</p>
</li>
</ul>
<h3>❌ Kamchiliklari:</h3>
<ul>
<li><p>Murakkab arxitektura</p>
</li>
<li><p>Redis / Queue / Shared DB kerak</p>
</li>
</ul>
<hr />
<h2>🧠 Real misol (Laravel stack)</h2>
<pre><code class="language-text">[Load Balancer]

   ↓     ↓     ↓

[App1] [App2] [App3]
   ↓      ↓      ↓

     Redis (cache/session)
     RabbitMQ (queue)
     Database (shared)
</code></pre>
<p>👉 Har bir app bir xil ishlaydi 👉 Requestlar bo‘linadi 👉 System scalable bo‘ladi</p>
<hr />
<h2>⚠️ Eng muhim tushuncha</h2>
<p>Horizontal scaling ishlashi uchun:</p>
<p>👉 App <strong>stateless</strong> bo‘lishi kerak</p>
<p>Ya’ni:</p>
<ul>
<li><p>Session → faylda emas ❌</p>
</li>
<li><p>Session → Redis’da ✅</p>
</li>
</ul>
<hr />
<h2>🔥 Xulosa</h2>
<ul>
<li><p>Vertical — oddiy va tez</p>
</li>
<li><p>Horizontal — professional va scalable</p>
</li>
</ul>
<p>👉 Katta loyihalar <strong>Hybrid</strong> ishlatadi.</p>
]]></content:encoded></item><item><title><![CDATA[Laravel 13]]></title><description><![CDATA[Laravel 13 — Developerlar uchun eng muhim yangilanishlar
Laravel 13 rasmiy ravishda chiqdi va framework yana bir qadam modern PHP architecture tomon rivojlandi. Bu versiya katta feature release bo‘lma]]></description><link>https://blog.isroilov.uz/laravel-13</link><guid isPermaLink="true">https://blog.isroilov.uz/laravel-13</guid><category><![CDATA[Laravel]]></category><category><![CDATA[laravel 13]]></category><category><![CDATA[PHP]]></category><dc:creator><![CDATA[Azizbek Isroilov]]></dc:creator><pubDate>Wed, 18 Mar 2026 03:01:50 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6875dbf585e7bd77b0faed73/1af5ea5c-5df5-417b-8669-a3d91b5758e4.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1>Laravel 13 — Developerlar uchun eng muhim yangilanishlar</h1>
<p>Laravel 13 rasmiy ravishda chiqdi va framework yana bir qadam <strong>modern PHP architecture</strong> tomon rivojlandi. Bu versiya katta feature release bo‘lmasa ham, <strong>developer experience, performance va PHP Attributes asosidagi konfiguratsiya</strong> kengaytirilgani bilan ajralib turadi.</p>
<p>Bu maqolada Laravel 13 dagi <strong>eng foydali va amaliy yangilanishlarni</strong> ko‘rib chiqamiz.</p>
<hr />
<h1>Laravel 13 Requirements</h1>
<p>Laravel 13 yangi PHP versiyalariga moslashtirilgan. Frameworkni ishlatish uchun quyidagi minimal talablar mavjud:</p>
<ul>
<li><p><strong>PHP 8.3 yoki undan yuqori</strong></p>
</li>
<li><p><strong>Composer 2.7+</strong></p>
</li>
<li><p><strong>Symfony 8 komponentlari</strong></p>
</li>
</ul>
<p>Bu o‘zgarishlar Laravelni zamonaviy PHP imkoniyatlariga moslashtiradi va framework ichida ko‘plab optimizatsiyalarni ta’minlaydi.</p>
<hr />
<h1>Laravel AI SDK endi Stable</h1>
<p>Laravel ekotizimidagi yana bir muhim yangilik — <strong>Laravel AI SDK endi stable versiyada chiqarildi</strong>.</p>
<p>Bu SDK yordamida siz AI modellar bilan ishlashni Laravel ilovalari ichida juda oson integratsiya qilishingiz mumkin.</p>
<p>Masalan:</p>
<ul>
<li><p>OpenAI</p>
</li>
<li><p>Anthropic</p>
</li>
<li><p>boshqa AI providerlar</p>
</li>
</ul>
<p>bilan ishlash uchun yagona API taqdim etadi.</p>
<p>Bu ayniqsa quyidagi use-case lar uchun foydali:</p>
<ul>
<li><p>AI chatbotlar</p>
</li>
<li><p>AI content generation</p>
</li>
<li><p>AI powered search</p>
</li>
<li><p>AI assistants</p>
</li>
</ul>
<p>Laravel ekotizimida AI integratsiyasi endi ancha soddalashdi.</p>
<hr />
<h1>1. Controller Middleware uchun PHP Attributes</h1>
<p>Laravel 13 da controller middleware larni <strong>PHP attributes orqali</strong> belgilash mumkin.</p>
<p>Laravel 12 da middleware odatda route yoki constructor orqali yozilardi.</p>
<h3>Laravel 12</h3>
<pre><code class="language-php">class UserController extends Controller
{
    public function __construct()
    {
        $this-&gt;middleware('auth');
    }
}
</code></pre>
<h3>Laravel 13</h3>
<pre><code class="language-php">use Illuminate\Routing\Attributes\Controllers\Middleware;

#[Middleware('auth')]
class UserController
{
}
</code></pre>
<p>Bundan tashqari method darajasida ham middleware qo‘yish mumkin:</p>
<pre><code class="language-php">#[Middleware('auth')]
class UserController
{
    #[Middleware('log')]
    public function index()
    {
        //
    }
}
</code></pre>
<p>Natija:</p>
<ul>
<li><p>controller code cleaner</p>
</li>
<li><p>constructor middleware yo‘q</p>
</li>
<li><p>metadata class darajasida turadi</p>
</li>
</ul>
<hr />
<h1>2. Authorization Attributes</h1>
<p>Controller ichida policy tekshirish ham attribute orqali yozilishi mumkin.</p>
<pre><code class="language-php">use Illuminate\Routing\Attributes\Controllers\Authorize;

class CommentController
{
    #[Authorize('delete', 'comment')]
    public function destroy(Comment $comment)
    {
        //
    }
}
</code></pre>
<p>Bu aslida quyidagi middleware ni replacement qiladi:</p>
<pre><code class="language-php">-&gt;middleware('can:delete,comment')
</code></pre>
<p>Natija:</p>
<ul>
<li><p>policy authorization <strong>deklarativ bo‘ldi</strong></p>
</li>
<li><p>controller o‘qilishi osonlashdi.</p>
</li>
</ul>
<hr />
<h1>3. Queue va Event Listener Attributes</h1>
<p>Laravel 13 da queue konfiguratsiyasi ham attribute orqali yozilishi mumkin.</p>
<pre><code class="language-php">use Illuminate\Queue\Attributes\Tries;
use Illuminate\Queue\Attributes\Timeout;

#[Tries(5)]
#[Timeout(120)]
class SendShipmentNotification implements ShouldQueue
{
}
</code></pre>
<p>Oldin bu property orqali yozilardi:</p>
<pre><code class="language-php">public $tries = 5;
public $timeout = 120;
</code></pre>
<p>Shuningdek boshqa attribute lar ham mavjud:</p>
<ul>
<li><p><code>#[Backoff]</code></p>
</li>
<li><p><code>#[MaxExceptions]</code></p>
</li>
<li><p><code>#[FailOnTimeout]</code></p>
</li>
<li><p><code>#[Connection]</code></p>
</li>
<li><p><code>#[Queue]</code></p>
</li>
<li><p><code>#[Delay]</code></p>
</li>
</ul>
<p>Natija:</p>
<p>queue konfiguratsiyasi <strong>class metadata orqali yoziladi</strong>.</p>
<hr />
<h1>4. Cache::touch() — TTL yangilash</h1>
<p>Laravel 13 da cache uchun yangi metod qo‘shildi.</p>
<pre><code class="language-php">Cache::touch('key', 3600);
</code></pre>
<p>Bu metod:</p>
<ul>
<li><p>cache value ni o‘zgartirmaydi</p>
</li>
<li><p>faqat <strong>TTL (expiration)</strong> ni yangilaydi.</p>
</li>
</ul>
<p>Masalan:</p>
<pre><code class="language-php">Cache::touch('session:123', now()-&gt;addHours(2));
</code></pre>
<p>Bu juda foydali:</p>
<ul>
<li><p>session refresh</p>
</li>
<li><p>activity tracking</p>
</li>
<li><p>cache regeneration oldini olish</p>
</li>
</ul>
<hr />
<h1>5. Cache Memoization</h1>
<p>Laravel 13 da yangi <strong>memo cache driver</strong> mavjud.</p>
<pre><code class="language-php">Cache::memo()-&gt;get('key');
</code></pre>
<p>Bu nimani qiladi:</p>
<p>1-chi call → real cache store 2-chi call → memory</p>
<p>Misol:</p>
<pre><code class="language-php">Cache::memo()-&gt;get('users');
Cache::memo()-&gt;get('users');
</code></pre>
<p>Ikkinchi call:</p>
<ul>
<li><p>Redis ga bormaydi</p>
</li>
<li><p>memory dan qaytaradi.</p>
</li>
</ul>
<p>Bu ayniqsa:</p>
<ul>
<li><p>service layer</p>
</li>
<li><p>repository layer</p>
</li>
</ul>
<p>da performance beradi.</p>
<hr />
<h1>6. Cache Failover Driver</h1>
<p>Laravel 13 cache uchun <strong>failover driver</strong> qo‘shdi.</p>
<pre><code class="language-php">'failover' =&gt; [
    'driver' =&gt; 'failover',
    'stores' =&gt; [
        'redis',
        'database'
    ]
]
</code></pre>
<p>Agar Redis ishlamay qolsa Laravel avtomatik fallback qiladi:</p>
<pre><code class="language-plaintext">redis → database
</code></pre>
<p>Bu production uchun juda foydali:</p>
<ul>
<li><p>Redis crash</p>
</li>
<li><p>Memcached down</p>
</li>
</ul>
<p>holatlarida ilova ishlashda davom etadi.</p>
<hr />
<h1>7. Event Dispatch After DB Commit</h1>
<p>Ba’zi eventlar transaction tugagandan keyin dispatch bo‘lishi kerak.</p>
<p>Laravel 13 da event class ichida quyidagicha yozish mumkin:</p>
<pre><code class="language-php">use Illuminate\Contracts\Events\ShouldDispatchAfterCommit;

class OrderShipped implements ShouldDispatchAfterCommit
{
}
</code></pre>
<p>Natija:</p>
<ul>
<li><p>event faqat <strong>transaction commit bo‘lgandan keyin ishlaydi</strong></p>
</li>
<li><p>inconsistent data muammosi kamayadi.</p>
</li>
</ul>
<hr />
<h1>8. Event Defer</h1>
<p>Laravel 13 event dispatch ni <strong>kechiktirish</strong> imkonini ham beradi.</p>
<pre><code class="language-php">Event::defer(function () {
    $user = User::create([...]);
    $user-&gt;posts()-&gt;create([...]);
});
</code></pre>
<p>Bu:</p>
<ul>
<li><p>barcha eventlarni</p>
</li>
<li><p>closure tugagandan keyin</p>
</li>
</ul>
<p>dispatch qiladi.</p>
<p>Bu ayniqsa:</p>
<ul>
<li><p>complex model creation</p>
</li>
<li><p>seeders</p>
</li>
<li><p>bulk operations</p>
</li>
</ul>
<p>uchun juda foydali.</p>
<hr />
<h1>9. Validation: Form Request Attributes</h1>
<p>Laravel 13 validation tizimida ham <strong>PHP attributes</strong> qo‘llab-quvvatlashi kengaytirildi. Endi ba'zi Form Request konfiguratsiyalarini metod yozmasdan, <strong>attribute orqali deklarativ tarzda</strong> yozish mumkin.</p>
<p>Bu kodni yanada <strong>clean va o‘qilishi oson</strong> qiladi.</p>
<hr />
<h2>1. StopOnFirstFailure Attribute</h2>
<p>Agar validation birinchi xatoda to‘xtashi kerak bo‘lsa, endi class ustida attribute qo‘yish mumkin.</p>
<p>Oldin:</p>
<pre><code class="language-php">$validator-&gt;stopOnFirstFailure()-&gt;fails();
</code></pre>
<p>Laravel 13:</p>
<pre><code class="language-php">use Illuminate\Foundation\Http\Attributes\StopOnFirstFailure;
use Illuminate\Foundation\Http\FormRequest;

#[StopOnFirstFailure]
class StorePostRequest extends FormRequest
{
    public function rules(): array
    {
        return [
            'title' =&gt; 'required|max:255',
            'body' =&gt; 'required',
        ];
    }
}
</code></pre>
<p>Bu validatorni <strong>birinchi xatoda to‘xtatadi</strong>.</p>
<hr />
<h2>2. RedirectTo Attribute</h2>
<p>Validation xato bo‘lsa qayerga redirect bo‘lishini attribute bilan belgilash mumkin.</p>
<pre><code class="language-php">use Illuminate\Foundation\Http\Attributes\RedirectTo;
use Illuminate\Foundation\Http\FormRequest;

#[RedirectTo('/dashboard')]
class StorePostRequest extends FormRequest
{
}
</code></pre>
<p>Oldin buni controller yoki boshqa joyda qo‘lda boshqarish kerak edi.</p>
<hr />
<h2>3. RedirectToRoute Attribute</h2>
<p>Agar redirect <strong>route nomi orqali</strong> qilinishi kerak bo‘lsa:</p>
<pre><code class="language-php">use Illuminate\Foundation\Http\Attributes\RedirectToRoute;

#[RedirectToRoute('dashboard')]
class StorePostRequest extends FormRequest
{
}
</code></pre>
<p>Bu route helper ishlatishni soddalashtiradi.</p>
<hr />
<h2>4. ErrorBag Attribute</h2>
<p>Agar sahifada bir nechta form bo‘lsa, validation xatolarini alohida bag ichiga joylash mumkin.</p>
<pre><code class="language-php">use Illuminate\Foundation\Http\Attributes\ErrorBag;

#[ErrorBag('login')]
class LoginRequest extends FormRequest
{
}
</code></pre>
<p>Blade’da foydalanish:</p>
<pre><code class="language-blade">{{ $errors-&gt;login-&gt;first('email') }}
</code></pre>
<hr />
<h2>5. Clean Controller Validation</h2>
<p>Laravel 13 bilan FormRequest ishlatish yana ham <strong>toza arxitektura</strong> beradi.</p>
<p>Controller endi faqat biznes logikani bajaradi:</p>
<pre><code class="language-php">public function store(StorePostRequest $request)
{
    \(data = \)request-&gt;validated();

    Post::create($data);
}
</code></pre>
<p>Validation esa <strong>FormRequest ichida kapsulalanadi</strong>.</p>
<hr />
<h1>Xulosa</h1>
<p>Laravel 13 katta feature release bo‘lmasa ham, framework ichida <strong>muhim arxitektura o‘zgarishlari</strong> mavjud.</p>
<p>Eng muhim yangiliklar:</p>
<ul>
<li><p>PHP 8.3 requirement</p>
</li>
<li><p>Laravel AI SDK stable</p>
</li>
<li><p>Controller middleware uchun <strong>PHP Attributes</strong></p>
</li>
<li><p>Authorization attributes</p>
</li>
<li><p>Queue listener attributes</p>
</li>
<li><p><strong>Cache::touch()</strong></p>
</li>
<li><p><strong>Stale-While-Revalidate caching</strong></p>
</li>
<li><p><strong>Memo cache driver</strong></p>
</li>
<li><p><strong>Cache failover</strong></p>
</li>
<li><p>Event dispatch after DB commit</p>
</li>
<li><p>Event defer</p>
</li>
<li><p><strong>Attribute-based configuration</strong></p>
</li>
<li><p><strong>cleaner FormRequest classes</strong></p>
</li>
<li><p><strong>kamroq boilerplate code</strong></p>
</li>
<li><p><strong>controllerlarni soddalashtirish</strong></p>
</li>
</ul>
<p>Laravel asta-sekin <strong>configuration → attributes</strong> modeliga o‘tmoqda. Bu esa frameworkni yanada <strong>cleaner va declarative</strong> qiladi.</p>
]]></content:encoded></item></channel></rss>