Від ідеї до реалізації: Як я створив та задеплоїв свій мікросервіс у хмарному середовищі
Привіт всім! Мене звуть Арсен Гриневич, я Full Stack Web Developer з досвідом розробки безпечних та надійних веб-додатків. У сучасному світі, де щорічні збитки від кіберзлочинності сягають вражаючих 6 трильйонів доларів США (за даними cybersecurityventures.com), питання безпеки стає одним з найважливіших аспектів розробки програмного забезпечення.
Актуальність проблеми:
У моєму останньому проєкті я зіткнувся з проблемою підвищення безпеки та захисту конфіденційних даних. Система, де рекрутери мали прямий доступ до бази даних з інформацією про спеціалістів, створювала значні ризики втручання зловмисників та витоку даних. Для вирішення цієї проблеми я розробив мікросервіс, який виступав у ролі транзакційного обробника запитів. Цей мікросервіс перевіряв запити рекрутерів, авторизував їх за допомогою Auth0 і повертав лише необхідну інформацію, значно зменшуючи ризики несанкціонованого доступу.
Розробка мікросервісу:
При розробці мікросервісу я використовував підхід Function as a Code та можливості хмарного провайдера AWS. Для зберігання даних були обрані сервіси Amazon RDS (для основної бази даних) та DynamoDB (для зберігання даних про рекрутерів). Взаємодія з реляційною базою даних здійснювалася за допомогою бібліотеки SQLAlchemy, що забезпечило гнучкість та незалежність від конкретної бази даних. Логіка мікросервісу була реалізована у функції lambda_handler з використанням AWS SDK для прямої взаємодії з хмарними сервісами.
Виклики та проблеми:
Під час розробки та деплою мікросервісу я зіткнувся з низкою викликів та проблем. Однією з основних проблем була бібліотека конектор але про це згодом. Я витратив значний час на вивчення документації AWS та пошук оптимальних рішень для моєї архітектури. Крім того, виникали питання щодо вибору найбільш підходящих технологій та бібліотек для реалізації мікросервісу. Я експериментував з різними підходами та проводив ретельне тестування, щоб забезпечити стабільність та надійність системи. Також я зіткнувся з проблемами сумісності між різними версіями бібліотек та хмарними сервісами, що вимагало додаткових зусиль для пошуку альтернативних рішень та налагодження роботи мікросервісу.
Деплоймент мікросервісу в хмарне середовище:
Процес деплойменту мікросервісу в хмарне середовище AWS включав розділення логіки та залежностей. Логіка була запакована у zip-файл, а залежності (бібліотеки) були додані через Lambda Layer з використанням Python 3.12. Під час цього процесу виникли проблеми з імпортом бібліотеки Psycopg2, яка не була сумісна з Python 3.12 в AWS Lambda. Після аналізу проблеми та розгляду альтернатив, я прийняв рішення замінити Psycopg2 на pg8000. Однак, pg8000 також мала проблеми з підключенням до RDS через застарілий метод аутентифікації MD5. Ця проблема була успішно вирішена шляхом додавання параметра connection_args з ssl=True при створенні SQLAlchemy Engine.
Висновок:
Розробка та деплоймент мікросервісу дозволили значно підвищити безпеку проєкту, мінімізувати ризики несанкціонованого доступу до даних та забезпечити чіткий контроль над запитами. Попри виклики та проблеми, з якими я зіткнувся в процесі розробки, використання таких технологій, як AWS Lambda, Amazon RDS, DynamoDB, SQLAlchemy та Auth0, дозволило створити надійну та масштабовану архітектуру. Цей досвід допоміг мені краще зрозуміти важливість безпеки та потенційні складнощі, які можуть виникати при розробці та деплойменті мікросервісів у хмарному середовищі. Я навчився адаптуватися до викликів, шукати альтернативні рішення та вдосконалювати свої підходи до розробки безпечних та надійних систем.
6 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів