늦은 프로그래밍 이야기
230329 TIL (기술면접 스터디) 본문
MSA(Microservice Architecture)란?
MSA는 Microservice Architecture의 약자로, 마이크로서비스 아키텍쳐라고도 불리며, 대규모 어플리케이션을 여러 개의 작은 서비스로 분리하여 개발하고 운영하는 아키텍처 패턴입니다.
기존의 모놀리식 아키텍처에서는 모든 기능을 담당하는 하나의 어플리케이션으로 개발 되었습니다. 하지만 이런 모놀리식 아키텍처는 어플리케이션 규모가 커질수록 개발, 배포, 확장 등의 이슈가 발생할 가능성이 높아졌습니다. 또한, 한 번에 모든 기능을 업데이트하기 때문에, 작은 수정 사항도 전체 어플리케이션의 배포에 영향을 미치게 됩니다.
이에 반해 MSA는 각각의 서비스를 작게 분할하고, 서비스 간의 의존성을 최소화하여 개발 및 운영을 보다 쉽게 관리할 수 있도록 하는 아키텍처 패턴입니다. 각 서비스는 독립적인 배포 단위로 개발되며, 서비스 간의 통신은 API를 통해 이루어집니다.
MSA의 장점으로는 다음과 같은 것들이 있습니다.
- 더 높은 확장성
개별 서비스의 요구사항에 따라 수평적인 확장이 가능합니다. - 더 높은 가용성
하나의 서비스 장애가 전체 시스템에 영향을 미치지 않습니다. - 더 빠른 개발과 배포
서비스 단위로 개발과 배포를 수행할 수 있기 때문에, 전체 어플리케이션의 배포를 기다릴 필요가 없습니다. - 더 높은 유연성
각 서비스는 독립적인 기술 스택을 가질 수 있으므로, 개발자는 최적의 기술을 선택할 수 있습니다. - 더 높은 안정성
개별 서비스의 장애가 전체 시스템에 영향을 미치지 않기 때문에, 안정성이 높아집니다.
제네릭에 대해서 설명하고, 컬렉션 클래스에서 왜 제네릭을 사용하는지 설명해주세요.
제네릭(Generic)은 자바에서 컬렉션(Collection) 클래스나 메서드에서 사용되는 타입을 일반화 시켜 특정 클래스나 메서드에서 사용할 수 있도록 타입을 매개변수화 하는 방법입니다.
제네릭을 사용하면 다음과 같은 장점이 있습니다.
- 타입 안정성(Type Safety) 보장
컴파일러가 타입 체크를 하기 때문에 타입 불일치에 따른 오류를 줄일 수 있습니다. - 타입 변환(Type Casting) 감소
컬렉션에서 요소를 꺼내올 때 일일이 타입 캐스팅을 하지 않아도 되므로 코드가 간결해집니다. - 재사용성(reusability) 증가
제네릭을 사용하면 다양한 타입에서 재사용할 수 있습니다.
컬렉션 클래스에서 제네릭을 사용하는 이유는
- 타입 명시
컬렉션 프레임워크는 여러 객체를 담을 수 있는 자료구조를 제공하고, 이를 쉽게 조작할 수 있는 메서드를 제공하는데 이러한 컬렉션 클래스는 객체를 저장하는데에 있어서 특정한 자료형을 요구합니다. 예를 들어, ArrayList를 사용한다면 ArrayList에 담겨진 객체들은 모두 동일한 타입이어야 합니다. 이러한 타입을 명시하기 위해 제네릭을 사용합니다. - 타입 안정성
제네릭은 클래스나 메서드에서 사용하는 타입의 종류를 컴파일 시에 체크할 수 있게 해줍니다. 이로 인해 런타임 시에 타입 에러가 발생할 가능성이 줄어들고, 안정적인 코드를 작성할 수 있습니다. 제네릭을 사용하면 컬렉션 클래스에 저장되는 객체의 타입을 컴파일러가 체크해 줌으로써, 타입 안정성을 확보할 수 있습니다. - 타입 변환 감소
제네릭을 사용하면 컬렉션 클래스를 사용할 때 매번 타입 캐스팅을 해야하는 불편함을 줄일 수 있습니다. 이전에는 Object 타입으로 저장하고 Object 타입으로 다시 꺼내서 사용하는 등 번거로운 작업이 필요했지만, 제네릭을 사용하면 저장된 객체를 쉽게 꺼내 사용할 수 있습니다. - 코드 가독성 향상
제네릭을 사용하면 어떤 타입의 객체를 다루는지 쉽게 파악할 수 있습니다. 따라서, 타입에 대한 오해나 혼동을 방지하고 가독성이 좋은 코드를 작성할 수 있습니다.
'내일배움캠프 > 기술면접' 카테고리의 다른 글
| 230330 TIL (기술면접 스터디) (0) | 2023.03.30 |
|---|---|
| 230327 TIL (기술면접 스터디) (0) | 2023.03.28 |
Comments