1. 아키텍처(Architecture)
- 소프트웨어 시스템에서 높은 추상 수준에 대한 구성요소들의 관계, 연결 유형 및 상호작용의 뼈대
2. 프레임워크
- 소프트웨어 애플리케이션이나 솔루션의 개발을 수월하게 하기 위해 소프트웨어의 구체적 기능들에 해당하는 부분의 설계와 구현을 재사용 가능하도록 협업화된 형태로 제공하는 소프트웨어 환경
- 프레임워크는 프로그래머들이 어플리케이션에 세부적인 사항을 제외한 공통 부분들의 개발에 드는 시간을 줄이고 세부 요구사항 구현에 집중할 수 있도록 하는 것을 목표로 함
3. 프레임워크와 라이브러리의 차이
- 소스코드 안 라이브러리
- 프레임워크 안 소스코드
1) 프레임워크
- 뼈대나 기반 구조(원하는 기능 구현에 집중할 수 있도록 일정한 형태와 필요한 기능을 갖추고 있는), 제어의 역전 개념이 적용된 대표적인 기술
- 소프트웨어의 특정 문제를 해결하기 위해서 상호 협력하는 클래스와 인터페이스의 집합
- 애플리케이션 개발 시 필수적인 코드, 알고리즘, DB 연동과 같은 기능들을 위해 어느 정도 뼈대(구조)를 제공하며 이러한 뼈대 위에서 사용자는 코드를 작성하여 애플리케이션을 개발)
- 제어의 역전 : 어떤 일을 하도록 만들어진 프레임워크에 제어의 권한을 넘김으로써 클라이언트 코드가 신경 써야할 것을 줄이는 전략 (라이브러리는 프로그래머가 작성하는 클라이언트 코드가 라이브러리의 메소드를 호출해서 사용하는 것, 프레임워크는 프레임워크의 메소드가 사용자의 코드 호출)
- 스프링, 장고/플라스크, 안드로이드 등
2) 라이브러리
- 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임, 즉 특정 기능을 모아둔 코드, 함수들의 집합이며 코드 작성 시 활용 가능한 도구들을 의미
- 프로그래머가 어떠한 기능을 수행하기 위해서 도움을 주는 또는 필요한 것들을 제공해주는 역할
- 라이브러리를 사용하는 애플리케이션 코드는 애플리케이션 흐름을 직접 제어 (프레임워크는 애플리케이션 코드가 프레임워크에 의해 사용됨, 애플리케이션 코드는 프레임워크가 짜 놓은 틀에서 수동적으로 동작하기 때문에 제어의 흐름을 프레임워크가 가지고 있는 것)
- pip install로 설치한 패키지/모듈 : pandas, beautifulsoup, numby, sklearn, Jquery(자바스크립트 라이브러리)
4. MSA(Microservice Architecture)
현재 트렌드 ** 제대로 알아보기
- 작고, 독립적으로 배포 가능한 각각의 기능을 수행하는 서비스들로 구성된 프레임워크를 의미
- 완전히 독립적으로 배포가 가능하고, 다른 기술 스택(개발언어, 데이터베이스 등)이 사용 가능한 단일 사업 영역에 초점을 둠
- 다른 서비스와의 연동이 쉽기 때문에, 비즈니스의 연결에 있어 중요(사업에 초점이 맞춰진 아키텍처)
1) MSA와 반대되는 개념
(1) Monolithic Architecture (기술에 초점)
- 소프트웨어의 모든 구성요소가 한 프로젝트에 통합되어 단일 패키지로 배포하는 아키텍처
- 부분장애가 전체 서비스의 장애로 확대될 수 있음
- 서비스의 변경이 어렵고, 수정 시 장애의 영향도 파악이 힘듦
- 서비스 트래픽을 분산시킬 수 없음
2) MSA 장점
- 서비스 업데이트 및 개선이 용이
- 분산형 개발을 통해 개발 주기가 단축되고, 빠르고 유연한 배포가 가능
- 독립적인 서비스로 인해 다른 서비스에 영향을 주지 않음
- 높은 확장성
- 다중 언어 지원 API를 사용으로 개방성 향상
3) MSA 단점
- 서비스별로 로그가 생성됨에 따라 중앙 로그 모니터링이 존재하지 않음'
- 하나의 프로젝트에 수많은 서비스들이 존재함에 따라 모든 서비스 모니터링 오버헤드가 증가(속도 느려짐)
- 모놀리식에 비해 상대적으로 많이 복잡한 구조
'이론 공부' 카테고리의 다른 글
자바 이론 정리 1 (0) | 2023.03.21 |
---|---|
JAVA 기본 클래스 (0) | 2023.03.20 |
개발 방법론 (0) | 2023.03.14 |
GET / POST 방식 (0) | 2023.03.12 |
인터페이스(Interface) (1) | 2023.03.12 |