🙋🏻♀️ 아직 정리 중에 있는 포스팅입니다.
애플리케이션이 운영되는 환경을 구성해보며 네트워크
, 운영체제
, 데이터베이스
, 컨테이너
등에 대해 생각해본다.
- AWS 상에서 네트워크를 구성해본다
- 컨테이너를 학습하고 3 tier로 운영환경을 구성해본다
- 개발 환경을 구성해보고 지속적 통합을 경험해본다
그럴듯한 서비스
란 어떤 서비스이고 어떻게 설계해야할까?
우리가 일상에서 사용하고 있는 서비스(ex.구글, 네이버)등 을 생각해보면
기본적으로 중단이 없어야 하고, 24시간 항상 사용할 수 있어야 하며, 보안에 취약해서는 안된다.
그래서 이번 서비스를 만들기 위해선 가장 크게 24시간
, 보안
, 무중단
이 세 가지를 만족시키기 위해서
필요한 방법들, 기술들을 중점으로 생각할 수 있다.
24시간
24시간 서비스를 운영하기 위해서 클라우드 서비스
를 이용하였다.
(그렇지 않으면 물리적인 서버를 24시간 가동해야 하는데 그럼 하드웨어 고장 및 이슈가 발생했을 때 바로 대응이 어렵다)
보안
아무나 접근하면 안되니 접근 제한을 하도록 망을 구성하고 (망 분리
, bastion host
)
reverse proxy
, TLS
를 통해 운영환경 보안을 강화하였다.
무중단
무중단 배포를 해야 하니 docker
등을 사용해서 배포하였다.
또한 서비스를 운영하기 위해서
DB 마이그레이션 을 할 수 있도록 flyway
를 사용하고
개발, 검증, 운영 을 통한 서비스 품질 보장을 위해 설정파일 분리
하였다.
Cloud ☁️
_ 클라우드를 사용하는 이유
'관심사의 분리' 에 대하여 생각해보자.
[참조]
https://edu.nextstep.camp/s/13RXWHcB/lt/GvyfA3IW
https://github.com/next-step/infra-subway-deploy/pull/150