پروژه‌ی آبان تتر

این پروژه از پنج بخش تشکیل شده است برای اجرای پروژه می‌توان دستور run.sh در root پروژه را اجرا کرد منتها باید در نظر داشت که این فایل اجرایی دیتاهای دیتابیس‌ها را پاک می‌کند و از نو می‌سازد

برای پاک کردن کامل پروژه هم می‌توان از دستور stop.sh استفاده کرد

مونگو

مونگوی این پروژه یک رپلیکاست است که که دارای کردنشیال می‌باشد و دیتاهای آن رمزگذاری می‌شود، کردنشیال آن برابر است با

user: root
pass: pass
database: admin

باید در نظر داشت که اگر قرار است مونگوها در نودهای جداگانه اجرا شوند آدرس‌های موجود در extra_hosts داکرکامپوز باید به تناسب تغییر کند

ردیس

ردیس پروژه یک ردیس سنتینیل سه نودی می‌باشد این ردیس دارای کردنشیال بوده که برابر است با

user: default
pass: test

سنتیل ردیس کردنشیال ندارد در نظر داشته باشید برای اجرای ردیس باید redis-1 در dns server یا /etc/hosts ست شده باشد و مقدار آن برابر آدرس سروری است که نود اول ردیس در آن اجرا می‌شود

کافکا

کافکای اجرا شده دارای سه نود است که به یک زوکیپر سه نودی متصل می‌شود
این کافکا دارای کردنشیال و رمزگذاری می‌باشد که چند کردنشیال دارد که برابر است با

user1: metricsreporter
pass: password

user2: kafkaclient
pass: password

user3 kafkabroker
pass: password

میکروسرویس ۱

این میکروسرویس با flask نوشته شده است و کد آن در دایرکتوری python-project1-1 موجود می‌باشد برای اجرای این پروژه از gunicorn استفاده شده است این میکروسرویس در مسیر /set_quote منتظر ریکوئست پست می‌شود و دیتایی که می‌گیرد به شرح ذیل است

name: نام صاحب سخن

quote: سخن

پس از گرفتن دیتا آن را داخل کافکا می‌ریزد

میکروسرویس ۲

این میکروسرویس با flask نوشته شده است و کد آن در دایرکتوری python-project2-1 موجود می‌باشد برای اجرای این پروژه از gunicorn استفاده شده است این پروژه در پس‌زمینه به کافکا گوش می‌کتد و در صورت آمدن دیتای جدید آن را در مونگو می‌ریزد
همچنین در مسیر /get_quote منتظر ریکوئست گت می‌شود تا یکی از سخنان ذخیره شده در مونگو را به شکل تصادفی برگرداند

مشکلات

متاسفانه به دلیل کمبود وقت دستور run.sh فایل‌های مربوط به tls را نمی‌سازد و این فایل‌ها به در خود گیت نگهداری شده است که برای یک پروژه‌ی مربوط به پروداکشن bad practice است
کردنشیال‌ها داخل پروژه ها و فایل README است که به دلیل ماهیت پروژه نیاز به این موضوع بود با توجه به صورت سوال نیاز بود که میکروسرویس‌ها بتوانند از ردیس هم استفاده کنند که وقت برای پیاده‌سازی آن نبود (قرار بود ردیس به عنوان کش هر چند وقت یک بار بخشی از دیتاهای مونگو را کش کند و دیتاها از مونگو گرفته شود تا پرفورمنس افزایش یابد)

به دلیل کمبود وقت اتصال ردیس به شکل رمزگذاری شده نشد