Python BackendHub
چند روز پیش ازم یک سوالی شد که جذاب بود برام: شما requirement ای دارین که باید بدون استفاده از هیچ دپندسی خارجی جز پایتون, با یک وب سوکت async که در نظر بگیرین که کلاینت بهش وصل میشه, باید از یک لایبری sync یک دیتای زیادی رو دانلود کنید و به کلاینت وب سوکت…
نکته سوال دوم: scale این پروژه به شدت سخته. جایی که وب سوکت میاد به شدت سخت scale میشه چون state داره اپلیکیشن. شما فکر کنید ۱ میلیون کاربر یک دفعه به وب سوکتتون وصل میشن، حالا ۲ تا اپ جدید میذارین، کسی بهش وصلنمیشه! چون همه به اپ اول وصلن هنوز. ولی rest api اینطوری نیست چون state نداره. فکر کنید میخواین دیپلوی کنید، اگه وب سوکت رو بیارین پایین همه ۱ میلیون کاربر باهم قطع میشن. وقتی داره یک دانلود بزرگ رخ میده، احتمال اینکه مموری بچسبه به سقف هم خیلی زیاده!
پس هر جایی که اپتون state داره سعی کنید کمترین فشار روش باشه. کاره منطقی اینه که یک بروکر داشته باشین، و یک سرور دیگه وظیفش فقط دانلود باشه و اطلاع بده تو مسیج بروکر که چقدر انجام شده. دیگه اینطوری درگیر لاک و … نمیشین و کد async و sync خیلی راحت میتونن باهم حرف بزنن
@PyBackendHub
پس هر جایی که اپتون state داره سعی کنید کمترین فشار روش باشه. کاره منطقی اینه که یک بروکر داشته باشین، و یک سرور دیگه وظیفش فقط دانلود باشه و اطلاع بده تو مسیج بروکر که چقدر انجام شده. دیگه اینطوری درگیر لاک و … نمیشین و کد async و sync خیلی راحت میتونن باهم حرف بزنن
@PyBackendHub
👍6
Python BackendHub
نکته سوال دوم: scale این پروژه به شدت سخته. جایی که وب سوکت میاد به شدت سخت scale میشه چون state داره اپلیکیشن. شما فکر کنید ۱ میلیون کاربر یک دفعه به وب سوکتتون وصل میشن، حالا ۲ تا اپ جدید میذارین، کسی بهش وصلنمیشه! چون همه به اپ اول وصلن هنوز. ولی rest…
این اصل همیشه هست، جایی که اپتون state داره، خیلی کار کمی انجام بدید.
پست مشابه:
https://news.1rj.ru/str/PyBackEndHub/838
پست مشابه:
https://news.1rj.ru/str/PyBackEndHub/838
Telegram
Python BackendHub
یک بحث خیلی خوبی شد تو گروه, گفتم تو کانالم بهش اشاره کنم.
تو معماری Event driven هر وقت شما یک periodic taskای دارین باید یک نکته رو بهش خیلی دقت کنید. این تسک پریودیک شما خیلی خیلی باید تا جایی که میتونه کم بار باشه. یعنی چی؟
فکر کنید یک تسک پریودیک دارین…
تو معماری Event driven هر وقت شما یک periodic taskای دارین باید یک نکته رو بهش خیلی دقت کنید. این تسک پریودیک شما خیلی خیلی باید تا جایی که میتونه کم بار باشه. یعنی چی؟
فکر کنید یک تسک پریودیک دارین…
👍4😁1
Forwarded from Python BackendHub
من چند وقت پیش یک آگهی ریموت تو شرکتی که تو برلین دارم توش کار میکنم گذاشتم.. چند نفر تماس گرفتن. وقتی صحبت از حقوق شد هیچ اطلاعی نداشتن که invoice چیه و چطوری میتونن قانونی کار کنند.
اگه میخواین ریموت کار کنید باید یک سری مراحلی رو طی کنید تا واجد شرایط باشین. اولین قدمش داشتن یک حساب بانکی و شماره مالیاته که بتونید یک شرکت یک جای دیگه دنیا رو به صورت قانونی invoice کنید!
این مقاله خیلی قشنگ توضیح داده دست نویسنده اش درد نکنه 🙂
@ManiFoldsPython
اگه میخواین ریموت کار کنید باید یک سری مراحلی رو طی کنید تا واجد شرایط باشین. اولین قدمش داشتن یک حساب بانکی و شماره مالیاته که بتونید یک شرکت یک جای دیگه دنیا رو به صورت قانونی invoice کنید!
این مقاله خیلی قشنگ توضیح داده دست نویسنده اش درد نکنه 🙂
@ManiFoldsPython
ویرگول
چطور به عنوان یه ایرانی با ۳۰۰ یورو تو اروپا شرکت ثبت کنیم؟
اگر شما برنامه نویس هستید و تو ایران (یا هرجای دیگه دنیا) زندگی میکنید ممکنه دنبال شغل ریموت از بقیه دنیا یا حتی ایدهای جهانی دارید ولی از…
👍26
Python BackendHub
من چند وقت پیش یک آگهی ریموت تو شرکتی که تو برلین دارم توش کار میکنم گذاشتم.. چند نفر تماس گرفتن. وقتی صحبت از حقوق شد هیچ اطلاعی نداشتن که invoice چیه و چطوری میتونن قانونی کار کنند. اگه میخواین ریموت کار کنید باید یک سری مراحلی رو طی کنید تا واجد شرایط…
من یک چیزی اضافه کنم: تو مهاجرتتون خیلی تاثیر داره اگه بتونید اینکارو انجام بدید. چون وقتی شما میتونید یک شرکتی رو invoice کنید دیگه نیازی نیست نگران ویزا اسپانسرشیپ باشین. و برای شرکت کلی خرج ندارین تا onboard شید. نمونش اینه که فرض کنید من آفر گرفتم از یک شرکت استارت آپ. اون شرکت ممکنه توان اینو نداشته باشه که ۳ ماه منتظر بشه تا نیرو بهش اضافه شه و تو این مدت هم یک نفر براش اختصاصی بذاره که کارای ویزاشو انجام بده. و پکیج onboarding بده. نمیگم این غیرممکن هستا.. این دیفالته شرکت های بزرگه شکی نیست توش. ولی من بحثم اینه که میتونید شانس مهاجرتتون رو بیشتر کنید. وقتی شما invoice میدین به یک شرکت -> میتونید از فردا روزی که قرارداد رو امضا کردین کار کنید. کنارشم هم کارای ویزاتون پیش میره و در نهایت جا به جا میشین. اگه هم دوست نداشتین مهاجرت کنید که میتونید تو ایران بمونید و درآمد دلاری داشته باشین.
@PyBackendHub
@PyBackendHub
❤21👍6
دوستانی که از داخل ایران اپلای کردن و به من خبر ندادن, لطفا یا به من مراجعه کنند یا داخل توضیحات اضافه بنویسن که قابلیت invoice دادن رو دارند از داخل ایران. اگه اینکارو نکنید متاسفانه ریجکت میشید.
مقاله خیلی خوبیه که یاد میده چطور از git bisect استفاده کنید. یوزکیسش؟
برای دیباگ خیلی مفیده. فکر کنید شما یک باگی دارین که n تایم پیش نداشتین (مثلا چند ساعت مهم نیست). و میخواین ببینید کدوم کامیت باعث ایجادش شده. میتونید یک تست reproduce براش بنویسید. و بعد با استفاده از bisect سریع به اون کامیتی که باعثش شده بود برسید.
https://noaabarki.medium.com/git-bisect-and-debugging-is-easy-afdccf8ae0e8
@PyBackendHub
برای دیباگ خیلی مفیده. فکر کنید شما یک باگی دارین که n تایم پیش نداشتین (مثلا چند ساعت مهم نیست). و میخواین ببینید کدوم کامیت باعث ایجادش شده. میتونید یک تست reproduce براش بنویسید. و بعد با استفاده از bisect سریع به اون کامیتی که باعثش شده بود برسید.
https://noaabarki.medium.com/git-bisect-and-debugging-is-easy-afdccf8ae0e8
@PyBackendHub
Medium
Git Bisect — And Debugging Is Easy
Once upon a time, there was a young developer who worked on a small side project, after a few hours he created a working version and…
👍13❤1
نسخه ۲.۷ پایندانتیک اومد که خیلی فیچر های جالبی داره:
https://blog.pydantic.dev/blog/2024/04/11/2-7-release/#new-features
@PyBackendHub
https://blog.pydantic.dev/blog/2024/04/11/2-7-release/#new-features
@PyBackendHub
pydantic.dev
New Features and Performance Improvements in Pydantic v2.7 | Pydantic
🔥4
نسخه بعدی لایبری aioclock منتشر شد. 🚀
تو این نسخه شما میتونید مشخص کنید تسکتون چند بار ران شه. مثلا من میخوام تسکم هر ۵ ثانیه یک بار ران شه ولی کلا میخوام ۱۰۰۰ بار ران شه.
با تشکر از مهدی و امیر عارف بابت contributeشون. برای حمایت میتونید استار بدید یا contribute کنید. اگه فیچری مد نظرتون هست خوشحال میشم تو ریپو یا تو تلگرام بهم بگید.
https://github.com/ManiMozaffar/aioclock
@PyBackendHub
تو این نسخه شما میتونید مشخص کنید تسکتون چند بار ران شه. مثلا من میخوام تسکم هر ۵ ثانیه یک بار ران شه ولی کلا میخوام ۱۰۰۰ بار ران شه.
from aioclock import AioClock, Every
app = AioClock()
@app.task(trigger=Every(seconds=5, max_loop_count=1000)
async def some_task():
print("This would only run for 1,000 times!")
با تشکر از مهدی و امیر عارف بابت contributeشون. برای حمایت میتونید استار بدید یا contribute کنید. اگه فیچری مد نظرتون هست خوشحال میشم تو ریپو یا تو تلگرام بهم بگید.
https://github.com/ManiMozaffar/aioclock
@PyBackendHub
🔥21❤6
سلام خدمت دوستان. حدودا ۱ سال از تاسیس کانال میگذره. برای همین این پستو میذارم که پین بمونه تا سال دیگه😁
اولا که من هیچ تبلیغی انجام نمیدم. لطفا برای این موضوع مراجعه نکنید.
دوما چند تا از دوستان این هفته لطف داشتن از من بخوان که منتورشون بشم و هزینه بدن. من منتورشیپ انجام نمیدم چون متاسفانه وقتشو ندارم, ولی هم سایت رایگان هست برای اینکار و هم اینکه من تو گروه و داخل پی وی جواب میدم و کمکی از دستم بیاد حتما انجام میدم.
سوما بهتره سوالتون رو تو گروه بپرسید چون اونجا افراد بیشتری هستن و نظرات من ممکنه bias باشه و یا اشتباه باشه. ولی باز اگه به هر دلیلی نمیخواستین داخل گروه بپرسید داخل پیوی هم پاسخ میدم.
داخل پست بعد گلچین پست ها و مطالب کانال رو میذارم. و اینو آپدیت میکنم هر از گاهی. فعالیت و تولید محتوا من همیشه به صورت رایگان بوده و خواهد ماند.
من مانی هستم. از سال ۲۰۲۰ برنامه نویسی رو به طور حرفه ای شروع کردم. قبلا پروداکت داشتم و به صورت تیمی روش کار میکردیم.البته الانم هستم ولی دیگه کاره تمام وقتم نیست. الان ۲ سالیه داخل یک استارت آپ آلمانی به عنوان مهندس نرم افزار کار میکنم و برلین زندگی میکنم. تجاربم بیشتر سمت بک اند, فرانت, تست نرم افزار (QA) و وب اسکرپ, و کمی آپریشن (ci/cd, observation, orchestration) هست. زبونی که باهاش کار میکنم پایتون و تایپ اسکریپت هست و در حال یادگیری rust هستم.
یوتیوب من:
https://www.youtube.com/@GitOverHere
لینکدین من:
https://www.linkedin.com/in/manimozaffar/
گیت هاب من:
https://github.com/manimozaffar
@PyBackendHub
اولا که من هیچ تبلیغی انجام نمیدم. لطفا برای این موضوع مراجعه نکنید.
دوما چند تا از دوستان این هفته لطف داشتن از من بخوان که منتورشون بشم و هزینه بدن. من منتورشیپ انجام نمیدم چون متاسفانه وقتشو ندارم, ولی هم سایت رایگان هست برای اینکار و هم اینکه من تو گروه و داخل پی وی جواب میدم و کمکی از دستم بیاد حتما انجام میدم.
سوما بهتره سوالتون رو تو گروه بپرسید چون اونجا افراد بیشتری هستن و نظرات من ممکنه bias باشه و یا اشتباه باشه. ولی باز اگه به هر دلیلی نمیخواستین داخل گروه بپرسید داخل پیوی هم پاسخ میدم.
داخل پست بعد گلچین پست ها و مطالب کانال رو میذارم. و اینو آپدیت میکنم هر از گاهی. فعالیت و تولید محتوا من همیشه به صورت رایگان بوده و خواهد ماند.
من مانی هستم. از سال ۲۰۲۰ برنامه نویسی رو به طور حرفه ای شروع کردم. قبلا پروداکت داشتم و به صورت تیمی روش کار میکردیم.البته الانم هستم ولی دیگه کاره تمام وقتم نیست. الان ۲ سالیه داخل یک استارت آپ آلمانی به عنوان مهندس نرم افزار کار میکنم و برلین زندگی میکنم. تجاربم بیشتر سمت بک اند, فرانت, تست نرم افزار (QA) و وب اسکرپ, و کمی آپریشن (ci/cd, observation, orchestration) هست. زبونی که باهاش کار میکنم پایتون و تایپ اسکریپت هست و در حال یادگیری rust هستم.
یوتیوب من:
https://www.youtube.com/@GitOverHere
لینکدین من:
https://www.linkedin.com/in/manimozaffar/
گیت هاب من:
https://github.com/manimozaffar
@PyBackendHub
Telegram
Python Backend Fellow
گروه رفع اشکال و بحث در مورد Backend Engineering و پایتون
Channel: @PyBackEndHub
Channel: @PyBackEndHub
❤46👍12👎1🙏1
Python BackendHub pinned «سلام خدمت دوستان. حدودا ۱ سال از تاسیس کانال میگذره. برای همین این پستو میذارم که پین بمونه تا سال دیگه😁 اولا که من هیچ تبلیغی انجام نمیدم. لطفا برای این موضوع مراجعه نکنید. دوما چند تا از دوستان این هفته لطف داشتن از من بخوان که منتورشون بشم و هزینه بدن.…»
گلچین مطالب کانال.
۱. رزومه نویسی و کار یافتن
دوره رزومه نویسی و رشد در مسیر شغلی
چند درصد آگهی رو خوب بلدیم رزومه بفرستیم؟راهنما عملکرد بهتر در مصاحبه ها
قدم های مورد نیاز برای مهاجرت
ریپازیتوری آموزش رزومه نویسی با بیش از ۲۰۰ استار
معرفی ریسورس برای مصاحبه و بهتر کردن رزومه
۲. دوره های آموزشی در یوتیوب
دوره SQLAlchemy
دوره دیزاین پترن
دوره تست نویسی
این پست در آینده ادیت خواهد شد.
@PyBackendHub
۱. رزومه نویسی و کار یافتن
دوره رزومه نویسی و رشد در مسیر شغلی
چند درصد آگهی رو خوب بلدیم رزومه بفرستیم؟راهنما عملکرد بهتر در مصاحبه ها
قدم های مورد نیاز برای مهاجرت
ریپازیتوری آموزش رزومه نویسی با بیش از ۲۰۰ استار
معرفی ریسورس برای مصاحبه و بهتر کردن رزومه
۲. دوره های آموزشی در یوتیوب
دوره SQLAlchemy
دوره دیزاین پترن
دوره تست نویسی
این پست در آینده ادیت خواهد شد.
@PyBackendHub
👍11🙏4❤1
این پست رو تو لینکدین دیدم. دوست دارم جوابتون رو بدونم. <چالش طراحی>
فرض کنید قراره سرویسی بنویسید که پلتفرم آنلاین رزرو و مدیریت کلاس درس باشه. حالا به این فکر کنید که یه کلاس درس از زمانی که خریداری میشه و در وضعیت «در انتظار برگزاری» قرار میگیره، باید بصورت خودکار وضعیت هاش توسط سیستم مدیریت بشه، مثلا وقتی کلاس خواست برگزار بشه بره در وضعیت «در حال برگزاری»، بعدش بشه «خاتمه یافته»، بعدش که کمیسیون استاد حساب شد بشه «تسویه شده» تصور کنید که ممکنه روی مقیاس بالا مثلا در ساعت اوج حدود ۵۰ هزار یا بیشتر کلاس برگزار بشه. تصور کنید کلاس ها به صورت آنلاین برگذار میشه. از چه ابزارها و معماری ای استفاده میکنید که پاسخگو نیاز بیزنس باشه؟
@PyBackendHub
فرض کنید قراره سرویسی بنویسید که پلتفرم آنلاین رزرو و مدیریت کلاس درس باشه. حالا به این فکر کنید که یه کلاس درس از زمانی که خریداری میشه و در وضعیت «در انتظار برگزاری» قرار میگیره، باید بصورت خودکار وضعیت هاش توسط سیستم مدیریت بشه، مثلا وقتی کلاس خواست برگزار بشه بره در وضعیت «در حال برگزاری»، بعدش بشه «خاتمه یافته»، بعدش که کمیسیون استاد حساب شد بشه «تسویه شده» تصور کنید که ممکنه روی مقیاس بالا مثلا در ساعت اوج حدود ۵۰ هزار یا بیشتر کلاس برگزار بشه. تصور کنید کلاس ها به صورت آنلاین برگذار میشه. از چه ابزارها و معماری ای استفاده میکنید که پاسخگو نیاز بیزنس باشه؟
@PyBackendHub
🔥9👍5❤1
Forwarded from Sadra Codes
نسخه 0.5 پایاکشن هم رلیز شد! 💫
پایاکشن یه ابزاره متنبازه که اجازه میده با استفاده از پایتون، گیتهاب اکشن بسازید!
توی این رلیز کلی اتفاق افتاده. پروژه دیگه یه تمپلیت ساده نیس و تبدیل شده به یه پکیج پایتون. علاوهبر بهترشدن داکیومنت و ساختار، یه فیچر خیلی خفن هم اضافه شده که واقعا استفاده از GitHub Issues رو یه لول میبره بالاتر!
این فیچر این قابلیت رو به شما میده تا از Issue Form گیتهاب بعنوان ساید فرانت اپ های پایتونتون استفاده کنید! این فیچر الان قابل استفاده هست و توتوریالش هم توی داکها قرارداده شده.
یک مثال که میتونید با پایاکشن پیاده کنید: فرض کنید که یک ریپو NLP دارید که برای Text Summaraization استفاده میشه و میخواید مردم این قابلیت رو داشته باشن که تستش کنن. به راحتی میتونید ساختاری رو طراحی کنید که هرشخص بتونه یک ایشو باز کنه و در ایشو، از ابزار شما استفاده کنه. (همهچیز اتوماتیک اتفاق میوفته)
💅 Issue Form feature: pyaction.imsadra.me/tutorial/#issueform
🟣 PyAction repo: github.com/lnxpy/pyaction
پایاکشن یه ابزاره متنبازه که اجازه میده با استفاده از پایتون، گیتهاب اکشن بسازید!
توی این رلیز کلی اتفاق افتاده. پروژه دیگه یه تمپلیت ساده نیس و تبدیل شده به یه پکیج پایتون. علاوهبر بهترشدن داکیومنت و ساختار، یه فیچر خیلی خفن هم اضافه شده که واقعا استفاده از GitHub Issues رو یه لول میبره بالاتر!
این فیچر این قابلیت رو به شما میده تا از Issue Form گیتهاب بعنوان ساید فرانت اپ های پایتونتون استفاده کنید! این فیچر الان قابل استفاده هست و توتوریالش هم توی داکها قرارداده شده.
یک مثال که میتونید با پایاکشن پیاده کنید: فرض کنید که یک ریپو NLP دارید که برای Text Summaraization استفاده میشه و میخواید مردم این قابلیت رو داشته باشن که تستش کنن. به راحتی میتونید ساختاری رو طراحی کنید که هرشخص بتونه یک ایشو باز کنه و در ایشو، از ابزار شما استفاده کنه. (همهچیز اتوماتیک اتفاق میوفته)
💅 Issue Form feature: pyaction.imsadra.me/tutorial/#issueform
🟣 PyAction repo: github.com/lnxpy/pyaction
👍12💩1
یک چالش رو به رو شدم یکی از دیتابیس های پروداکشن ۳ ترابایت دیتا داخلش بود. گرچه کل row هاش رو هم ۱۰۰ گیگ هم نمیشد. و باعث میشد فضای سرور پر شه و دیتابیس بیاد پایین.
میدونستین وقتی یک row رو دیلیت میکنید فضا داخل دیتابیس PostgreSQL خالی نمیشه؟ بخوام درست تر بگم, فضا همچنان توسط تیبل reserve شده. برای همینه که میگن بهتره تو postgresql نیاین فایل byte بزرگی رو ذخیره کنید. البته تو کیس من دیتا بایت بزرگ نبود, صرفا دیتا زیاد بود. و دلیلش هم به خاطر مدل MVCC دیتابیس هست.
دو راهکار وجود داره برای اینکار. اولیش استفاده از VACUUM خوده دیتابیسه.😎 فکر کنید دوستتون زنگ بزنه بپرسه داری چیکار میکنی, بگی دارم جارو میکنم :))
دومیش استفاده از یک extension هست که شخصا تستش نکردم ولی جالب بود وقتی داشتم یک مقاله راجبش میخوندم.
@PyBackendHub
میدونستین وقتی یک row رو دیلیت میکنید فضا داخل دیتابیس PostgreSQL خالی نمیشه؟ بخوام درست تر بگم, فضا همچنان توسط تیبل reserve شده. برای همینه که میگن بهتره تو postgresql نیاین فایل byte بزرگی رو ذخیره کنید. البته تو کیس من دیتا بایت بزرگ نبود, صرفا دیتا زیاد بود. و دلیلش هم به خاطر مدل MVCC دیتابیس هست.
دو راهکار وجود داره برای اینکار. اولیش استفاده از VACUUM خوده دیتابیسه.😎 فکر کنید دوستتون زنگ بزنه بپرسه داری چیکار میکنی, بگی دارم جارو میکنم :))
دومیش استفاده از یک extension هست که شخصا تستش نکردم ولی جالب بود وقتی داشتم یک مقاله راجبش میخوندم.
@PyBackendHub
PostgreSQL Documentation
VACUUM
VACUUM VACUUM — garbage-collect and optionally analyze a database Synopsis VACUUM [ ( option [, ...] ) ] [ table_and_columns …
👍23🙏1
https://www.youtube.com/watch?v=q99TYA7LnuA
یک فیلم جذاب از آرمین که داره rye رو معرفی میکنه. توصیه میکنم حتما ببینید.
داخل یک ویدیو تو کانال یوتیوبش هم یک walk through رو سورس کد و نحوه کارکرد rye رو نشون میده.
پ.ن: فقط صدای کیبورد آرمین >>>. البته واسه ویدیو. وگرنه همکارم بود استعفا میدادم 🤣(شوخیه دوستان جدی نگیرین😅)
@PyBackendHub
یک فیلم جذاب از آرمین که داره rye رو معرفی میکنه. توصیه میکنم حتما ببینید.
داخل یک ویدیو تو کانال یوتیوبش هم یک walk through رو سورس کد و نحوه کارکرد rye رو نشون میده.
پ.ن: فقط صدای کیبورد آرمین >>>. البته واسه ویدیو. وگرنه همکارم بود استعفا میدادم 🤣(شوخیه دوستان جدی نگیرین😅)
@PyBackendHub
YouTube
Rye: a Hassle-Free Python Experience (Rye 0.21 Demonstation)
Demonstrates the then latest version of Rye (0.21) and now it can be used to manage Python projects and interpreters.
For more information see https://rye-up.com/
For more information see https://rye-up.com/
😁2👍1🙏1
#otel
بر پایه opentelemetry ابزار بعدی pydantic هم توسعه داده شد 🔥🔥
همونطور که تو رودمپشون بود قرار بود سولوشنی بدن که دیگه نیازی نباشه شما خیلی درگیر observability بشی داخل کدتون و اینترفیس developer friendly تر و تجربه بهتری بهتون بدن.
دقایقی پیش logfire سولوشن جدید pydantic اوپن سورس شد. توصیه میکنم حتما یک سر بزنید بهش
https://docs.pydantic.dev/logfire/
@PyBackendHub
بر پایه opentelemetry ابزار بعدی pydantic هم توسعه داده شد 🔥🔥
همونطور که تو رودمپشون بود قرار بود سولوشنی بدن که دیگه نیازی نباشه شما خیلی درگیر observability بشی داخل کدتون و اینترفیس developer friendly تر و تجربه بهتری بهتون بدن.
دقایقی پیش logfire سولوشن جدید pydantic اوپن سورس شد. توصیه میکنم حتما یک سر بزنید بهش
https://docs.pydantic.dev/logfire/
@PyBackendHub
👍14❤1🙏1
Python BackendHub
#otel بر پایه opentelemetry ابزار بعدی pydantic هم توسعه داده شد 🔥🔥 همونطور که تو رودمپشون بود قرار بود سولوشنی بدن که دیگه نیازی نباشه شما خیلی درگیر observability بشی داخل کدتون و اینترفیس developer friendly تر و تجربه بهتری بهتون بدن. دقایقی پیش logfire…
#otel
سوال پرسیدن که این پکیج چیه اصلا و کارش چیه. اولا باید بگم اگه onboarding guide اش رو بخونید خیلی راحته استفاده ازش. تو ۱ دقیقه میتونید بالا بیارین و شروع به استفاده کنید. بدون اینکه چیزی رو بخواین هاست کنید.
اول بذارین توضیح بدم observation یعنی چی. ما توی devops دو آپریشن داریم که شبیه همن و گاها باهم اشتباه گرفته میشن. اولیش مانتورینگه. مانیتورینگ به پروسه ای میگن که دیتا کالکت میشه از سرویسی, و یک ریپورت از سلامت سرویس بر اساس metric های مشخصی که برای سلامت سیستم رو نشون میدن و کالکت شدن ساخته میشه. یعنی چی؟ مثلا تعداد ریسپانس های 5xx در ۲۴ ساعت گذشته. یکی از شناخته شده ترین ابزار برای اینکار prometheus هست. observability به پروسه ای میگن که رویکرد تحقیقاتی داره. یعنی دنبال این نیست که بگه چقدر ریسپانس 5xx وجود داره. دنبال دلیل وجود این ریسپانس هاست. چرا الان این درخواست تو پروداکشن ارور ۵۰۰ میده؟ خوندن کل لاگ سرویس قدیمی ترین و ابتدایی ترین راهکار بود.
وقتی بک اند پیچیده تر شد, دیگه خوندن لاگ واقعا کارساز نبود. شما فکر کنید در لحظه ۱۰۰ درخواست داره میاد براتون. چطور میخواین لاگ هارو بخونید؟ تو قدم بعدی لاگ های هر درخواست رو جدا کردن. ولی بازم کار ساز نبود تو دنیای distributed system. چون مثلا یک سرویس ۱ با سرویس ۲ داشت حرف میزد. ورودی که میداد بهش درست نبود. سرویس ۱ صرفا یک exception میگرفت که سرویس ۲ استتوس ۵۰۰ داده. و این کافی نبود برای اینکه متوجه شیم چه اتفاقی میفته.
سولوشن های زیادی اومدن تو مارکت. از قبیل sentry که شاید اسمشو شنیده باشین. یا datadog و لوکی و ... . اینقدر این سولوشن ها زیاد شدن و هر کدوم ساز خودشون رو میزدن. نمیشد راحت از این سولوشن سوییچ کرد به اون یکی. نمیشد مزایا دو سولوشن رو همزمان داشت. و learning curve سختی داشت اگه میخواستین سوییچ کنید از یکی به یکی دیگه.
اینجا بود که CNCF (Cloud native compute foundation) یک پروژه جدید رو استارت زد. همون فاندیشنی که کوبر و prometheus و خیلی ابزار های تحت کلاد رو ساخته. اومد یک پروتکلی ساخت به اسم opentelemetry.
یعنی چی پروتکل؟ یعنی گفت sentry جان من برام مهم نیست شما لاگ رو چطور ذخیره میکنی یا پردازش میکنی اینترنالی. شما باید span داشته باشی. metric داشته باشی. و trace. و دقیقا تعریف کرد که اینا چین. یعنی اومد گفت اینترفیس خارجی یک سیستم observability چطور باید باشه؟ چون در نهایت همه این سیستما شبیه هم بودن. و حالا چون همشون داشتن از یک پروتکل خاصی پیروی میکردن شما میتونستی راحت از سولوشن یک سوییچ کنی به سولوشن دو. مثلا شاید مثالشو دیده باشین که تو سیستم فایل استوریج بعضی استوریجا s3 compatible هستن. اینم دقیقا شبیه همونه.
استک observation به دو قسمت تقسیم میشه. یکی میشه exporter و یکی میشه داشبورد. exporter معمولا یک لایبریه که شما نصب میکنی. و باهاش اون دیتایی که میخوای export میکنی. و میگی دیتا رو کجا بفرسته.(یک وقتام برعکسه, سرور داره دیتا رو میگیره). قسمت دوم میشه اینترنال اون استک. مثلا دیتایی که فرستاده میشه تو چه دیتابیسی ذخیره میشه؟ چطوری پردازش میشه؟ چی به شما نمایش داده میشه؟من بهش میگم داشبورد.
خوده opentelemetry داشبورد خاصی نداره. صرفا یک سری exporter تو زبون های مختلف داره که میتونید تو گیتهابش ببینید. مثلا برای fastapi و جنگو لایبری داره. ولی پیاده سازی و داشبوردی نداره برای نشون دادن این اطلاعات. چون همونطور که گفتم در نهایت فقط یک پروتکل و specification هست. از طرفی سولوشن های داشبورد زیاده.یک سرچ کنید میرسید بهش. مثلا من خودم signoz استفاده میکنم.
خب همه اینارو گفتم. حالا نقش logfire این وسط چیه؟ logfire همون لایبری های اکسپورتر opentelemetry رو اینترفیسشو بهتر کرده. و با pydantic هم اینتگریتشون کرده. و یکم utilty اضافه کرده. این قسمت exporter اش هست که اوپن سورسه.
یک قسمت داشبورد هم داره که هنوز اوپن سورس نشده. و مشخص نیست که بشه یا نه. ولی فعلا رایگانه.
اینجا قشنگ صفر تا صد توضیح داده. بعد توضیح های من حالا خیلی بهتر متوجه میشین.
@PyBackendHub
سوال پرسیدن که این پکیج چیه اصلا و کارش چیه. اولا باید بگم اگه onboarding guide اش رو بخونید خیلی راحته استفاده ازش. تو ۱ دقیقه میتونید بالا بیارین و شروع به استفاده کنید. بدون اینکه چیزی رو بخواین هاست کنید.
اول بذارین توضیح بدم observation یعنی چی. ما توی devops دو آپریشن داریم که شبیه همن و گاها باهم اشتباه گرفته میشن. اولیش مانتورینگه. مانیتورینگ به پروسه ای میگن که دیتا کالکت میشه از سرویسی, و یک ریپورت از سلامت سرویس بر اساس metric های مشخصی که برای سلامت سیستم رو نشون میدن و کالکت شدن ساخته میشه. یعنی چی؟ مثلا تعداد ریسپانس های 5xx در ۲۴ ساعت گذشته. یکی از شناخته شده ترین ابزار برای اینکار prometheus هست. observability به پروسه ای میگن که رویکرد تحقیقاتی داره. یعنی دنبال این نیست که بگه چقدر ریسپانس 5xx وجود داره. دنبال دلیل وجود این ریسپانس هاست. چرا الان این درخواست تو پروداکشن ارور ۵۰۰ میده؟ خوندن کل لاگ سرویس قدیمی ترین و ابتدایی ترین راهکار بود.
وقتی بک اند پیچیده تر شد, دیگه خوندن لاگ واقعا کارساز نبود. شما فکر کنید در لحظه ۱۰۰ درخواست داره میاد براتون. چطور میخواین لاگ هارو بخونید؟ تو قدم بعدی لاگ های هر درخواست رو جدا کردن. ولی بازم کار ساز نبود تو دنیای distributed system. چون مثلا یک سرویس ۱ با سرویس ۲ داشت حرف میزد. ورودی که میداد بهش درست نبود. سرویس ۱ صرفا یک exception میگرفت که سرویس ۲ استتوس ۵۰۰ داده. و این کافی نبود برای اینکه متوجه شیم چه اتفاقی میفته.
سولوشن های زیادی اومدن تو مارکت. از قبیل sentry که شاید اسمشو شنیده باشین. یا datadog و لوکی و ... . اینقدر این سولوشن ها زیاد شدن و هر کدوم ساز خودشون رو میزدن. نمیشد راحت از این سولوشن سوییچ کرد به اون یکی. نمیشد مزایا دو سولوشن رو همزمان داشت. و learning curve سختی داشت اگه میخواستین سوییچ کنید از یکی به یکی دیگه.
اینجا بود که CNCF (Cloud native compute foundation) یک پروژه جدید رو استارت زد. همون فاندیشنی که کوبر و prometheus و خیلی ابزار های تحت کلاد رو ساخته. اومد یک پروتکلی ساخت به اسم opentelemetry.
یعنی چی پروتکل؟ یعنی گفت sentry جان من برام مهم نیست شما لاگ رو چطور ذخیره میکنی یا پردازش میکنی اینترنالی. شما باید span داشته باشی. metric داشته باشی. و trace. و دقیقا تعریف کرد که اینا چین. یعنی اومد گفت اینترفیس خارجی یک سیستم observability چطور باید باشه؟ چون در نهایت همه این سیستما شبیه هم بودن. و حالا چون همشون داشتن از یک پروتکل خاصی پیروی میکردن شما میتونستی راحت از سولوشن یک سوییچ کنی به سولوشن دو. مثلا شاید مثالشو دیده باشین که تو سیستم فایل استوریج بعضی استوریجا s3 compatible هستن. اینم دقیقا شبیه همونه.
استک observation به دو قسمت تقسیم میشه. یکی میشه exporter و یکی میشه داشبورد. exporter معمولا یک لایبریه که شما نصب میکنی. و باهاش اون دیتایی که میخوای export میکنی. و میگی دیتا رو کجا بفرسته.(یک وقتام برعکسه, سرور داره دیتا رو میگیره). قسمت دوم میشه اینترنال اون استک. مثلا دیتایی که فرستاده میشه تو چه دیتابیسی ذخیره میشه؟ چطوری پردازش میشه؟ چی به شما نمایش داده میشه؟من بهش میگم داشبورد.
خوده opentelemetry داشبورد خاصی نداره. صرفا یک سری exporter تو زبون های مختلف داره که میتونید تو گیتهابش ببینید. مثلا برای fastapi و جنگو لایبری داره. ولی پیاده سازی و داشبوردی نداره برای نشون دادن این اطلاعات. چون همونطور که گفتم در نهایت فقط یک پروتکل و specification هست. از طرفی سولوشن های داشبورد زیاده.یک سرچ کنید میرسید بهش. مثلا من خودم signoz استفاده میکنم.
خب همه اینارو گفتم. حالا نقش logfire این وسط چیه؟ logfire همون لایبری های اکسپورتر opentelemetry رو اینترفیسشو بهتر کرده. و با pydantic هم اینتگریتشون کرده. و یکم utilty اضافه کرده. این قسمت exporter اش هست که اوپن سورسه.
یک قسمت داشبورد هم داره که هنوز اوپن سورس نشده. و مشخص نیست که بشه یا نه. ولی فعلا رایگانه.
اینجا قشنگ صفر تا صد توضیح داده. بعد توضیح های من حالا خیلی بهتر متوجه میشین.
@PyBackendHub
👍23❤11🙏4
Python BackendHub
#otel سوال پرسیدن که این پکیج چیه اصلا و کارش چیه. اولا باید بگم اگه onboarding guide اش رو بخونید خیلی راحته استفاده ازش. تو ۱ دقیقه میتونید بالا بیارین و شروع به استفاده کنید. بدون اینکه چیزی رو بخواین هاست کنید. اول بذارین توضیح بدم observation یعنی…
یک سوال خوبی هم که پرسیدن این بود که چی سره sentry و datadog و اینا اومد.
ببینید اینا خودشون یک sdk داشتن. هنوزم دارن. منتهی اومدن sdk هارو ریفکتور کردن که با opentelemetry protocol هم سازگاری داشته باشه. ولی اگه sdk ها ۱۰۰ تا فیچر داشتن, اگه سوییچ کنید رو پروتکل اوپن تلمتری, اون موقع ممکنه ۲۰ تا فیچر sdk هاشو از دست بدید. چرا؟ چون opentelemetry هنوز نتونسته چهارچوبی بسازه که صد در صد فیت باشه واسه همه این سولوشن ها. ولی اگه بخواین اون ۲۰ تا فیچر رو فاکتور بگیرین, مثلا شما میتونید sdk سنتری رو استفاده کنید با داشبورد سیگنوز. یا sdk لاگ فایر با داشبورد سنتری. یا sdk خوده اوپن تلمتری با datadog. و خوبی opentelemetry هم دقیقا همینه. که شما هر sdk که دوست دارین با هر داشبوردی میتونید استفاده کنید.
منتهی همونطور که اشاره کردم ممکنه یک وقتا sdk ها در برابر داشبورد خودشون یک سری فیچر های اضافه و خارج از پروتکل opentelemetry داشته باشن.
@PyBackendHub
ببینید اینا خودشون یک sdk داشتن. هنوزم دارن. منتهی اومدن sdk هارو ریفکتور کردن که با opentelemetry protocol هم سازگاری داشته باشه. ولی اگه sdk ها ۱۰۰ تا فیچر داشتن, اگه سوییچ کنید رو پروتکل اوپن تلمتری, اون موقع ممکنه ۲۰ تا فیچر sdk هاشو از دست بدید. چرا؟ چون opentelemetry هنوز نتونسته چهارچوبی بسازه که صد در صد فیت باشه واسه همه این سولوشن ها. ولی اگه بخواین اون ۲۰ تا فیچر رو فاکتور بگیرین, مثلا شما میتونید sdk سنتری رو استفاده کنید با داشبورد سیگنوز. یا sdk لاگ فایر با داشبورد سنتری. یا sdk خوده اوپن تلمتری با datadog. و خوبی opentelemetry هم دقیقا همینه. که شما هر sdk که دوست دارین با هر داشبوردی میتونید استفاده کنید.
منتهی همونطور که اشاره کردم ممکنه یک وقتا sdk ها در برابر داشبورد خودشون یک سری فیچر های اضافه و خارج از پروتکل opentelemetry داشته باشن.
@PyBackendHub
👍10
بنظرم دانش تو زمینه بک اند به ۳ قسمت تقسیم میشه، که خیلی مهمه سه تاشو داشته باشیم.
مثلا فکر کنید میخواین یک rest api بنویسید به همراه تست.
قسمت اول بلد بودن فریم ورکی برای اینکاره. مثل پای تست و فست. ولی بلد بودن اینا کافی نیست فقط
قسمت دوم، فلسفه پشت اون موضوعه. که دونستنش خیلی ضروریه. مثلا تو بحث api نویسی کی باید یک اندپوینت post باشه کی put کی patch و .. . یک api چطور باید باشه. Rest api چی داره که بهش میگن restful. و …. یا مثلا برای تست نویسی چی باید تست شه. چقد باید تست نوشته شه. چی باید ماک شه. چی نباید ماک شه.
و قسمت سوم اینکه بدونیم پشت صحنه اینا چطور کار میکنن. قسمت سوم همیشه الزامی نیست چون انتهایی نداره ولی اگه به اندازه کافی قسمت سوم رو نداشته باشین، خیلی وابسته میشین به اون فریم ورکی که دارین ازش استفاده میکنید.
@PyBackendHub
مثلا فکر کنید میخواین یک rest api بنویسید به همراه تست.
قسمت اول بلد بودن فریم ورکی برای اینکاره. مثل پای تست و فست. ولی بلد بودن اینا کافی نیست فقط
قسمت دوم، فلسفه پشت اون موضوعه. که دونستنش خیلی ضروریه. مثلا تو بحث api نویسی کی باید یک اندپوینت post باشه کی put کی patch و .. . یک api چطور باید باشه. Rest api چی داره که بهش میگن restful. و …. یا مثلا برای تست نویسی چی باید تست شه. چقد باید تست نوشته شه. چی باید ماک شه. چی نباید ماک شه.
و قسمت سوم اینکه بدونیم پشت صحنه اینا چطور کار میکنن. قسمت سوم همیشه الزامی نیست چون انتهایی نداره ولی اگه به اندازه کافی قسمت سوم رو نداشته باشین، خیلی وابسته میشین به اون فریم ورکی که دارین ازش استفاده میکنید.
@PyBackendHub
👍37👎4❤1🔥1
Python BackendHub
بنظرم دانش تو زمینه بک اند به ۳ قسمت تقسیم میشه، که خیلی مهمه سه تاشو داشته باشیم. مثلا فکر کنید میخواین یک rest api بنویسید به همراه تست. قسمت اول بلد بودن فریم ورکی برای اینکاره. مثل پای تست و فست. ولی بلد بودن اینا کافی نیست فقط قسمت دوم، فلسفه پشت اون…
برداشت اشتباه نکنید از حرفم، من نگفتم فقط باید نوشتن api و تست بلد باشین. گفتم سه سطح یادگیری برای هرچیزی هست.
تو یک سطح شما یوزر خوبی هستی با اتکا به یک ابزار خاصی.
تو یک سطح شما میتونی یوزرخوبی باشی حتی بدون اتکا به اون ابزار خاص. و میتونی درک کنی که چطوری کار میکنه.
و تو یک سطح شما نه تنها یوزرخوبی هستی، بلکه تصمیم گیرنده خوبی هستی چون چرا ها رو درک میکنی.
@PyBackendHub
تو یک سطح شما یوزر خوبی هستی با اتکا به یک ابزار خاصی.
تو یک سطح شما میتونی یوزرخوبی باشی حتی بدون اتکا به اون ابزار خاص. و میتونی درک کنی که چطوری کار میکنه.
و تو یک سطح شما نه تنها یوزرخوبی هستی، بلکه تصمیم گیرنده خوبی هستی چون چرا ها رو درک میکنی.
@PyBackendHub
👍23❤1