MSA(Microservice Architecture)란?
하나의 큰 어플리케이션을 여러개의 작은 어플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍쳐를 말합니다. 예전에는 Monolithic Architecture라는 소프트웨어의 모든 구성요소가 한 프로젝트에 통합되어 있는 형태로 개발을 하였습니다. 소규모프로젝트에는 합리적일지 모르나 일정 규모 이상의 서비스에서 Monolithic Architecture 는 비효율적입니다. Microservice Architecture에서는 하나의 어플리케이션을 작은 서비스 단위로 나누어서 작업을 하기 때문에 각각의 서비스의 독립적 배포가 가능하고 다른 서비스에 대한 의존성이 낮아집니다. 또한 확장성이 높으며 에러가 발생해도 그 에러가 발생한 단위의 서비스를 격리가 가능하기 때문에 유연한 대처가 가능합니다.
MSA의 단점으로는 상대적으로 복잡하다는 점이 있고 서비스가 커질 수록 그 복잡도가 늘어날 수 있다는 점이 단점입니다. 서비스가 분리되어 있기 때문에 트랜잭션의 복잡도가 증가하고 많은 자원을 필요로 하게 됩니다. 또 데이터가 여러 서비스에 걸쳐 분산되기 때문에 한번에 조회하기가 어려울 수 있고, 데이터의 정합성도 관리하기 어렵습니다. 성능면에서는 서비스간 호출시 API를 사용하기 때문에 통신 비용이나, latency가 그만큼 늘어난다는 단점이 있습니다.
제네릭에 대해서 설명하고, 컬렉션 클래스에서 왜 제네릭을 사용하는 지 설명해주세요.
데이터 타입을 일반화한다는 의미를 가지고 있으며 클래스나 메서드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는 방법입니다. 클래스에서 사용할 타입을 클래스 외부에서 설정하는 것 입니다. 제네릭의 장점은 객체 타입의 안정성을 높일 수 있고 반환 값에 대한 타입 변환을 쉽게 할 수 있다는 점입니다. 타입 체크와 형변환을 생략할 수 있어서 코드가 간결해진다는 장점도 있습니다. 컬렉션은 이러한 장점 때문에 제네릭 기법으로 구현이 되어 있습니다. 컬렉션을 특정 타입만 다루지 않고 여러 종류의 타입으로 변환할 수 있도록 컬렉션을 일반화 시키기 위해 제네릭을 사용합니다.
List, Set, Map, HashMap의 차이에 대해서 설명해주세요.
List는 데이터들이 순서대로 저장되고 중복을 허용합니다.
Set은 데이터의 집합으로 순서가 없고 중복되는 데이터를 허용하지 않아서 중복되지 않는 데이터를 사용할 때 유용합니다.
Map은 key와 value라는 페어로 이루어지는 데이터의 집합입니다. key는 중복되지 않고 순서를 보장하지 않습니다. 인덱스가 따로 존재하지 않기 때문에 iterator를 사용해야합니다. HashMap은 마찬가지로 key에 대한 중복이 없으며 순서를 보장하지 않습니다. 동기화가 보장이 되지 않고, key와 value값으로 null을 허용한다는 특징이 있습니다.
정리하자면, list는 데이터들이 순서대로 저장되며 중복을 허용하고, set은 순서가 보장되지 않고 중복을 허용하지 않고, Map은 순서가 보장되지 않고 key값의 중복은 허용하지만 value값은 중복될 수 없다는 특징이 있습니다.
'Tech Interview' 카테고리의 다른 글
@SpringBootTest @WebMvcTest 트랜젝션 TCP UDP (0) | 2023.02.27 |
---|---|
Parameter vs Argument 프로세스 vs 스레드 (0) | 2023.02.24 |
DI(Dependency Injection)과 DB에서 인덱스 사용 장점 (0) | 2023.02.22 |
객체지향프로그래밍과 REST API (0) | 2023.02.21 |
Spring 기술 면접 질문 답변 정리 (0) | 2023.02.16 |