설계 단계는 전체 프로젝트의 성공과 다양한 요구사항의 해결 방식에 영향을 미치기 때문에 소프트웨어 개발 프로세스에서 중요한 구성 요소입니다.
단일 모듈 내에 모든 소프트웨어 구성 요소를 통합하는 모놀리식 아키텍처 패턴은 개발자들 사이에서 널리 사용되어 왔습니다. 하지만 이 전략은 특히 복잡한 애플리케이션의 경우 최적이 아닌 것으로 판명될 수 있습니다.
마이크로서비스를 활용하면 기존 아키텍처의 제약을 완화할 수 있습니다. 마이크로서비스는 특정 기능을 수행하도록 설계된 작고 독립적인 프로그램입니다. 모놀리식 애플리케이션과 구별되는 마이크로서비스는 독립적으로 배포 및 확장할 수 있으므로 민첩성과 유지 관리의 용이성을 높일 수 있습니다.
마이크로서비스 아키텍처
마이크로서비스 아키텍처는 소프트웨어 엔지니어링 기술의 전형으로 설명할 수 있으며, 실질적인 애플리케이션의 복잡한 태피스트리를 개별 단위로 분할하여 각 단위가 특정 비즈니스 의미를 개선하는 데 전념하는 방식으로 구현됩니다.
앞서 언급한 서비스는 별도의 데이터베이스 서버 및 계산 자산과 같은 전용 리소스를 활용합니다. 모놀리식 아키텍처와 달리 마이크로서비스 애플리케이션은 분리되어 있으므로 유연성이 향상됩니다.
분산 시스템은 독립적인 마이크로서비스를 실행하는 여러 서버 노드로 구성되며, 시스템 내 통신을 용이하게 하기 위해 HTTP와 같은 프로토콜 또는 RabbitMQ와 같은 메시징 브로커를 통한 프로세스 간 통신을 활용합니다.
본질적으로 이 아키텍처 전략은 서비스가 자율성을 유지하면서도 소프트웨어 플랫폼 내에서 효율적으로 작동할 수 있도록 해줍니다.
이 튜토리얼에서는 Flask와 PostgreSQL을 활용한 기본 사용자 관리 서비스 구현에 대한 지침을 제공합니다.
PostgreSQL 데이터베이스 설정
시작하기 위해서는 PostgreSQL을 설치해야 합니다. 이 소프트웨어가 없는 경우 Windows 기반 시스템 또는 macOS에 PostgreSQL 설치 지침을 참조하세요.
원격 PostgreSQL 데이터베이스 서버를 설정하는 옵션도 있습니다.
본 문서는 Render의 무료 플랜을 활용하여 PostgreSQL 데이터베이스를 배포하는 프로세스를 설명하는 것을 목표로 하며, Render에서 해당 데이터베이스의 인스턴스를 생성하는 데 필요한 단계를 포함합니다.
⭐ Render 웹 사이트 로 이동하여 계정에 가입하고 대시보드 페이지에 로그인합니다.
⭐ 대시보드 페이지의 표시된 서비스 목록에서 PostgreSQL 서비스를 선택합니다.
⭐ 데이터베이스 설정 페이지에서 필요한 세부 정보를 입력하고 무료 티어를 선택한 후 마지막으로 데이터베이스 생성을 클릭합니다.
이 프로젝트와 함께 제공되는 코드는 지정된 GitHub 리포지토리에서 찾아보세요.
플라스크 마이크로서비스 만들기
터미널에 새 디렉터리를 생성하고 해당 디렉토리로 이동하세요.
다음으로, 격리된 가상 개발 환경을 쉽게 생성할 수 있는 도구인 virtualenv를 배포해야 합니다.
프로젝트의 가상 환경을 생성하려면 다음 단계를 따르세요: 1. 먼저 컴퓨터에서 터미널 또는 명령 프롬프트를 열고 가상 환경을 생성할 디렉터리로 이동합니다. 2. 다음 명령어를 사용하여 `venv`를 사용하여 새 가상 환경을 생성합니다: “`bash python -m venv [가상 환경 이름] “` 가상 환경 이름]`을 원하는 가상 환경 이름으로 바꿉니다. 예를 들어 “myenv”라는 가상 환경을 만들려면 명령은 다음과 같습니다: “`bash python -m venv myenv “` 1. 가상 환경이 생성되면 다음 명령을 실행하여 활성화합니다: “`bash source [가상 환경 이름]/bin/activate
마지막으로 가상 환경을 활성화합니다.
필수 패키지 설치
“
flask
psycopg2-binary
sqlalchemy
“.
다음으로 프로젝트에 필요한 패키지를 설치하는 프로세스를 구현해야 합니다. 이 단계에는 개발 작업을 완료하는 데 필요한 소프트웨어 또는 라이브러리를 다운로드하고 설치하는 작업이 포함됩니다. 필요한 패키지를 가져오고 구성하기 위해 apt-get 또는 yum과 같은 패키지 관리자를 사용할 수 있습니다. 이 프로세스와 관련된 구체적인 단계는 사용 중인 운영 체제 및 환경에 따라 다르지만 일반적으로 패키지 이름과 버전 번호를 지정하고 설치 명령을 실행해야 합니다.
플라스크 서버 생성
지정된 작업을 수행하려면 프로젝트의 루트 디렉터리 내에 “service.py”라는 이름의 Python 파일을 새로 생성하고 다음과 같이 내용을 구현해야 합니다:
가져오기해야 하는 항목을 명확히 설명해 주세요.
Flask 인스턴스를 생성하고 데이터베이스 연결을 구성합니다.
app = Flask(__name__)
engine = create_engine("postgresql+psycopg2://flask_service_fe0v_user:4785MhjfkdjfhjfjyUx67O2Nuzjchb2MQIP@dpg-chffjfjdkgfk54d6mb7860-a.oregon-postgres.render.com/flask_service_fe0v")
Render의 데이터베이스 설정 페이지에서 외부 데이터베이스 URL을 복사합니다. SQLAlchemy create_engine 메서드와 Psycopg2를 사용하여 데이터베이스 연결을 구성합니다.위 코드의 데이터베이스 URL을 업데이트하여 위에 지정된 형식과 일치하는 자체 PostgreSQL 인스턴스의 URL로 바꾸어야 합니다. URL 형식이 올바르지 않으면 코드에서 오류가 발생합니다.
사용자 정보의 표 형식 표현으로 구성된 데이터베이스의 목적에 맞게 SQLAlchemy 모델이 만들어집니다. 그 후, 앞서 언급한 코드는 상기 모델을 구현한 후 데이터베이스 연결 엔진이 매개변수로 사용되는 SQLAlchemy create\_all 함수를 사용하여 데이터베이스에 해당 테이블을 생성합니다. 궁극적으로 세션 메이커의 인스턴스는 동일한 엔진 객체를 통해 설정되어 데이터베이스와 시스템의 다른 구성 요소 간의 상호 작용을 가능하게 합니다.
마지막으로 마이크로서비스에 대한 애플리케이션 프로그래밍 인터페이스(API) 경로를 설명하는 것이 필수적입니다.
마이크로서비스 테스트
본 코드는 PostgreSQL 데이터베이스에서 정보를 저장하고 검색할 수 있는 사용자 데이터 마이크로서비스의 기본 예시를 보여줍니다. 마이크로서비스 설계 원칙에 따라 웹 서비스를 구성하기 위한 다양한 방법론을 용이하게 하므로 마이크로서비스에 RESTful API 구조를 채택하는 것이 바람직합니다.
마이크로서비스는 여기서 설명하는 것 외에도 시스템의 고유한 요구 사항에 가장 적합한 다양한 설계 방법론과 통신 프로토콜을 유연하게 활용할 수 있다는 점에 유의할 필요가 있습니다.
서비스의 기능을 검증하기 위해 개발 서버를 활성화하고 Postman과 같은 도구를 사용하여 이전에 지정한 대상에 HTTP 문의를 보내세요.
flask --app service run
사용자 정보 제출을 위해 Postman에 설명된 대로 HTTP POST 방식을 활용하세요.
도커로 마이크로서비스 컨테이너화
도커는 소프트웨어 애플리케이션과 필수 종속성을 컨테이너 내에 패키지화하여 운영 환경에서 마이크로서비스의 개발, 배포, 관리를 통합할 수 있도록 지원합니다. 개별 서비스를 분리하면 미리 준비된 통신 프로토콜을 통해 자율적으로 작동하고 서로 통신할 수 있습니다.
시작하기 전에 먼저 Docker 웹사이트 에 있는 단계에 따라 Docker를 설치해야 합니다. 그런 다음 컨테이너에서 애플리케이션을 실행하는 데 필요한 종속성을 설정하는 데 필요한 지침이 포함된 Docker파일에서 Docker 이미지를 빌드합니다.
Docker파일을 생성하려면 먼저 프로젝트의 루트 폴더 내에 디렉터리를 설정해야 합니다.이 디렉터리는 Docker파일의 콘텐츠를 저장하는 위치 역할을 합니다. 파일 자체의 이름은 적절한 식별을 위해 “Dockerfile”로 지정해야 합니다. 파일이 생성되면 기본 이미지 지정, 필요한 종속성 설치, 컨테이너 구성 등 Docker 이미지를 빌드하는 데 필요한 명령으로 파일을 채울 수 있습니다. 이러한 단계는 코드를 효과적으로 실행할 수 있는 기능적인 Docker 환경을 설정하는 데 필수적입니다.
Docker 이미지를 구성하려면 다음 명령을 실행하세요.
마지막으로 Docker 컨테이너를 실행합니다.
이렇게 하면 Flask 마이크로서비스를 실행하는 Docker 컨테이너가 시작되고 컨테이너의 포트 5000이 호스트 머신의 포트 8000에 노출되어 웹 브라우저 또는 Postman에서 URL http://localhost:5000 을 사용하여 HTTP 요청을 할 수 있습니다.
마이크로서비스 아키텍처 채택
소프트웨어 애플리케이션 개발에서 마이크로서비스 아키텍처의 활용은 확장성과 복원력을 촉진하는 능력으로 인해 널리 인정받고 있습니다. 마이크로서비스 아키텍처는 애플리케이션을 개별적인 독립형 구성 요소로 분할하여 시스템의 관리 및 확장을 용이하게 합니다.
고유한 장점에도 불구하고 이 아키텍처 패턴이 모든 애플리케이션에 완전히 적합한 것은 아닙니다. 반대로, 가장 효과적인 설계 전략을 결정할 때는 해당 사업의 특정 비즈니스 전제 조건이 가장 중요한 고려 사항이 되어야 합니다.