یک عادت خوبی که توی بچههای ایران هست که یک endpoint توی پروژههای بکند میسازند به اسم health-check اما ۹۰٪ اشتباه پیادهسازی میشه متأسفانه.
برای اونایی که نمیدونند، health-check برای این هست که بصورت اتوماتیک یک سیستم دیگه مثل k8s یا سیستم مانیتورینگ بتونه وضعیت بکند رو بررسی کنه و اگر جوابی نگرفت ایمیل بزنه یا اون pod رو ریست کنه.
حالا چرا میگم اشتباه پیادهسازی میشه، اول میرم سراغ مانیتورینگ:
فرض کن شما یک بکند داری که برای کار کردن به postgres, celery نیاز داره با این وضعیت سیستم شما وقتی سالم هست که به postgres شما بتونه یه درستی دسترسی بگیره و البته به celery (عملکرد celery, postgres رو اگر بخواید بررسی کنید نیاز به ۲ تا سیستم مانیتورینگ جدا دارید، برای شما توی سطح اپلیکیشن دسترسی به این سرویسها مهم هست)
فکر کنم متوجه منظورم شدید؛ توی health-check باید دسترسی به سرویسهایی که بکند شما بدون اونا healthy نیست رو هم چک کنید. توی مثال قبلی اگر celery برای شما اجبار نیست توی health-check کانکشن بهش رو تست نمیکنید.
حالا چرا k8s رو مثال زدم ؟ برای اینکه بگم استفاده از این endpoint برای بررسی pod ها کار درستی نیست:
هر pod بصورت جداگونه و بصورت تک سرویس در نظر گرفته میشه که به تنهایی میتونه restart بشه بدون اینکه به سیستم لطمه بزنه (من HA درنظرم گرفتم، k8s برای همینه دیگه) پس باید تو سریعتر زمانی که عملکرد خودش رو از دست میده restart بشه فکر کن load سیستم بره بالا در این شرایط هم از روی health-check نمیشه مطمئن بود آیا چون load شبکه رفت بالا جواب دیر میاد یا memory leakage داریم یا ... پس سرویس رو از exception, ... مانیتور کنید با k8s تا جایی که میشه.
یک عادت خوبی که توی بچههای ایران هست که یک endpoint توی پروژههای بکند میسازند به اسم health-check اما ۹۰٪ اشتباه پیادهسازی میشه متأسفانه.
برای اونایی که نمیدونند، health-check برای این هست که بصورت اتوماتیک یک سیستم دیگه مثل k8s یا سیستم مانیتورینگ بتونه وضعیت بکند رو بررسی کنه و اگر جوابی نگرفت ایمیل بزنه یا اون pod رو ریست کنه.
حالا چرا میگم اشتباه پیادهسازی میشه، اول میرم سراغ مانیتورینگ:
فرض کن شما یک بکند داری که برای کار کردن به postgres, celery نیاز داره با این وضعیت سیستم شما وقتی سالم هست که به postgres شما بتونه یه درستی دسترسی بگیره و البته به celery (عملکرد celery, postgres رو اگر بخواید بررسی کنید نیاز به ۲ تا سیستم مانیتورینگ جدا دارید، برای شما توی سطح اپلیکیشن دسترسی به این سرویسها مهم هست)
فکر کنم متوجه منظورم شدید؛ توی health-check باید دسترسی به سرویسهایی که بکند شما بدون اونا healthy نیست رو هم چک کنید. توی مثال قبلی اگر celery برای شما اجبار نیست توی health-check کانکشن بهش رو تست نمیکنید.
حالا چرا k8s رو مثال زدم ؟ برای اینکه بگم استفاده از این endpoint برای بررسی pod ها کار درستی نیست:
هر pod بصورت جداگونه و بصورت تک سرویس در نظر گرفته میشه که به تنهایی میتونه restart بشه بدون اینکه به سیستم لطمه بزنه (من HA درنظرم گرفتم، k8s برای همینه دیگه) پس باید تو سریعتر زمانی که عملکرد خودش رو از دست میده restart بشه فکر کن load سیستم بره بالا در این شرایط هم از روی health-check نمیشه مطمئن بود آیا چون load شبکه رفت بالا جواب دیر میاد یا memory leakage داریم یا ... پس سرویس رو از exception, ... مانیتور کنید با k8s تا جایی که میشه.
BY Python Hints
Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283
Like a stock, you can buy and hold Bitcoin as an investment. You can even now do so in special retirement accounts called Bitcoin IRAs. No matter where you choose to hold your Bitcoin, people’s philosophies on how to invest it vary: Some buy and hold long term, some buy and aim to sell after a price rally, and others bet on its price decreasing. Bitcoin’s price over time has experienced big price swings, going as low as $5,165 and as high as $28,990 in 2020 alone. “I think in some places, people might be using Bitcoin to pay for things, but the truth is that it’s an asset that looks like it’s going to be increasing in value relatively quickly for some time,” Marquez says. “So why would you sell something that’s going to be worth so much more next year than it is today? The majority of people that hold it are long-term investors.”
How Does Bitcoin Work?
Bitcoin is built on a distributed digital record called a blockchain. As the name implies, blockchain is a linked body of data, made up of units called blocks that contain information about each and every transaction, including date and time, total value, buyer and seller, and a unique identifying code for each exchange. Entries are strung together in chronological order, creating a digital chain of blocks. “Once a block is added to the blockchain, it becomes accessible to anyone who wishes to view it, acting as a public ledger of cryptocurrency transactions,” says Stacey Harris, consultant for Pelicoin, a network of cryptocurrency ATMs. Blockchain is decentralized, which means it’s not controlled by any one organization. “It’s like a Google Doc that anyone can work on,” says Buchi Okoro, CEO and co-founder of African cryptocurrency exchange Quidax. “Nobody owns it, but anyone who has a link can contribute to it. And as different people update it, your copy also gets updated.”