در ادامه صفحههایی را میبینید که از برچسب «Production» استفاده میکنند
زندهبودن با سالمبودن فرق دارد
بدترین اختلال کوبرنتیزی که مدام میبینم، از کار افتادن یک نود نیست. یک پایگاهدادهی کُند است، یک پروب liveness که با همان پایگاهداده حرف میزند، و کلاستری که بعد هر پادی را که هنوز کار مفید میکرد میکُشد.
liveness یعنی «این برنامه سالم است» نیست. یعنی «این فرایند آنقدر گیر کرده که کوبرنتیز باید خلاصش کند». اگر این اسلحه را به سمت یک وابستگی بگیرید، کل ناوگان را خواهید زد.
@Transactional اسپرینگ آن چیزی نیست که فکر میکنید
در بازبینی کد هنوز میبینم که @Transactional مثل یک دعای خیر به کار میرود: رویش بگذار روی یک متد، و پایگاهداده سر به راه میشود. نمیشود. اسپرینگ وقتی تراکنشی را شروع میکند که یک پروکسی فراخوانی ورودی را بگیرد. اگر فراخوانی هرگز به پروکسی نرسد، نه تراکنشی دارید، نه rollbackی، و در عوض یک باگ بسیار گیجکننده در محیط عملیاتی خواهید داشت.
آنچه باور داشتم ← آنچه حالا میکنم
قبلاً «محض احتیاط» روی هر متد سرویس کمی @Transactional میپاشیدم. حالا آن را روی همان یک متدی میگذارم که مرز مورد کاربرد است، تستی مینویسم که rollback را اثبات کند، و فراخوانیهای خصوصی درون یک کلاس را نشانهی بو میدانم.