본문 바로가기

개발자 면접준비

[Daily] 3월 29일 데일리 과제

Q. MSA(Microservice Architecture)란?

A. 소프트웨어를 작은 독립적인 단위인 "마이크로 서비스"로 분할하는 아키텍처 스타일입니다. 

마이크로 서비스는 자체 데이터 저장소, 비즈니스 로직 및 인터페이스를 가지며, 독립적으로 배포 될 수 있습니다. 

이는 더욱 높은 확장성과 유연성을 제공하며, 애플리케이션의 일부가 많은 부하를 처리하는 경우 해당 마이크로 서비스만 수평적으로 확장시킬 수 있습니다. 따라서 마이크로 서비스 아키텍처는 애플리케이션의 유지 보수성과 확장성을 향상 시킬 수 있고 개발자들은 자신이 담당하는 서비스에 집중할 수 있으므로 빠른 개발 및 배포가 가능합니다. 그러나 아키텍처를 구현하는 것은 매우 복잡하고 서비스 간의 통신과 일관된 데이터 관리등의 극복해야하는 과정이 따릅니다. 


Q. 제네릭에 대해서 설명하고, 컬렉션 클래스에서 왜 제네릭을 사용하는 지 설명해주세요.

A. 변수와 함수, 클래스 등을 선언할 때, 타입을 일반화하여 사용하는 방식입니다. 즉 타입 매개변수를 사용하여 여러 종류의 타입에 대해 동작할 수 있는 코드를 작성 할 수 있습니다. 또한 제네릭을 사용하게 되면 타입별로 중복되는 코드를 줄일 수 있으며 타입의 안정성을 보장하면서 코드의 유연성과 재사용성을 높일 수 있습니다. 

컬렉션 클래스에서 제네릭을 사용하는 경우도 위와 같은 경우로서 타입의 안정성과 코드의 재사용성을 높이기 위해서 입니다. 컬렉션 클래스는 데이터를 저장하고 처리하는 기능을 제공하는 클래스 입니다. 이때 컬렉션 클래스가 다양한 타입의 객체를 저장하고 처리할 수 있도록 하기 위해서는 컬렉션 클래스 내부에서 객체 타입을 일반화하여 사용해야 합니다. 

제네릭을 사용하면, 컬렉션 클래스 내부에서 사용되는 객체의 타입을 컴파일 시점에 체크할 수 있으므로 잘못된 타입의 객체가 저장되는 것을 방지할 수 있습니다. 또한 제네릭을 사용하면, 컬렉션 클래스를 재사용하여 다양한 타입의 객체를 저장하고 처리할 수 있으므로, 코드의 재사용성을 높일 수 있습니다.