여러 서버에 걸쳐 동작하는 웹 애플리케이션 개발 시 고려사항
분산 환경 고려사항
-
성능과 확장성
- 로드 밸런서를 통한 트래픽 분산
- 필요 시 서버 수평 확장 (Scale-out) 설계
-
데이터 일관성과 동기화
- 데이터베이스 동기화, 캐싱 전략
- 분산 트랜잭션 → 2PC
-
보안과 인증
- 토큰 기반 인증 (JWT), HTTPS
- API 보안 → 인증과 전자서명
-
네트워크 지연과 대역폭
- CDN 활용으로 정적 리소스 빠른 제공
- 최적화된 프로토콜 선택
-
분산 시스템 아키텍처
- 마이크로서비스, 컨테이너, 서버리스
- Docker, Kubernetes
-
모니터링과 로깅
- 서버 상태, 트래픽, 오류 로그 모니터링
- DevOps 참조
-
클라우드 서비스 활용
- AWS, Azure, Google Cloud
SOA (서비스 지향 아키텍처)
비즈니스 애플리케이션을 독립적인 서비스 단위로 구성하는 소프트웨어 개발 방식
주요 이점
- 출시 기간 단축: 서비스 재사용으로 빠른 어셈블
- 효율적인 유지 보수: 개별 서비스 수정이 전체에 영향 없음
- 더 뛰어난 적응성: 기술 변화에 유연한 대응
기본 원칙
| 원칙 | 설명 |
|---|---|
| 상호 운용성 | 플랫폼/언어와 무관한 서비스 간 상호작용 |
| 느슨한 결합 | 서비스 간 강한 의존성 없이 독립적으로 동작 |
| 추상화 | 클라이언트가 내부 구현을 몰라도 서비스 사용 가능 |
| 세분화 | 각 서비스는 하나의 개별 비즈니스 기능만 수행 |
웹 서비스
네트워크 상에서 서로 다른 종류의 컴퓨터들 간의 상호작용을 위한 소프트웨어 시스템
- 주요 표준: SOAP, WSDL, UDDI
- 느슨한 연결(loose coupling), XML 기반 메시징
- 최근에는 REST 스타일 웹 서비스가 주류
- 웹 서비스 조합으로 애플리케이션 구축 → 매시업(Mashup)
관련 노트
- DevOps - 개발과 운영의 통합
- Docker - 컨테이너 기반 서비스 배포
- Kubernetes - 서비스 오케스트레이션
- 메시지 브로커 - 서비스 간 비동기 통신
- 동시성 - 분산 환경에서의 동시성 처리