AOP 사용법
@Aspect
@Component
public class TimeTraceAop {
@Around("execution(* hello.hellospring..*(..))")
public Object execute(ProceedingJoinPoint joinPoint) throws Throwable {
Annotation 동작원리와 사용법
@Target({ElementType.[적용대상]})
@Retention(RetentionPolicy.[정보유지되는 대상])
public @interface [어노테이션 이름]{ ... }
@LogExecutionTime 어노테이션 만들기
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface LogExecutionTime { }
LogAspect 파일 만들기
@Component
@Aspect
public class LogAspect {
@Around("@annotation(LogExecutionTime)")
public Object logExecutionTime(ProceedingJoinPoint joinPoint) throws Throwable{
Intellij 에서 Lombok setter/getter를 컴파일 안해도 쓸 수 있는 원리
setter/getter 등을 빌드 시점에 자동으로 생성
Jedis 와 Lettuce
Lettuces는 Netty 기반의 Redis Client로 비동기로 요청을 처리해 성능면에 장점이 있다.
Jedis 기반처럼, Pool을 별도로 사용하지 않아도 돼서 개발에 더 편함
ㄴ JesdisPool은 쓰레드로부터 안전한 커넥션 풀이며 모든 리소스를 관리 가능한 범위 내에서 유지 가능
Jedis는 Spring boot2.0부터 deprecated됨
Jedis는 쓰레드에 안전하지 않음
RabbitMQ 리스너 구현 2가지 방법
- @RabbitListner 어노테이션을 사용
- SimpleMessagListenerContainer를 사용해서 직접 리스너를 구현하는 방법
MapStruct
dto와 entity간의 Automatically Mapping
@Mapper
public interface CarMapper {
CarMapper INSTANCE = Mappers.getMapper(CarMapper.class);
@Mapping(source = "name", target = "modelName")
@Mapping(source = "color", target = "modelColor")
Car to(CarDto carDto);
}
몽고DB와 RDBMS 차이점
장점
- Flexibility : Schema-less라서 어떤 형태의 데이터라도 저장할 수 있다.
- Performance : Read & Write 성능이 뛰어나다. 캐싱이나 많은 트래픽을 감당할 때 써도 좋다.
- Scalability : 애초부터 스케일아웃 구조를 채택해서 쉽게 운용가능하다. Auto sharding 지원
- Deep Query ability : 문서지향적 Query Language 를 사용하여 SQL 만큼 강력한 Query 성능을 제공한다.
- Conversion / Mapping : JSON형태로 저장이 가능해서 직관적이고 개발이 편리하다.
몽고DB 단점
- JOIN이 없다. join이 필요없도록 데이터 구조화 필요
- memory mapped file으로 파일 엔진 DB이다. 메모리 관리를 OS에게 위임한다. 메모리에 의존적, 메모리 크기가 성능을 좌우한다.
몽고DB 샤딩 아키텍처
라우터(mongos) : 사용자의 쿼리 요청을 어떤 샤드로 전달할지 정하고, 각 샤드로부터 받은 쿼리 결과 데이터를 병합해서 사용자에게 되돌려주는 역할
Config Server : 샤드 클러스터에서 사용자가 생성한 데이터베이스와 컬렉션들의 목록 등 많은 정보를 관리

Docker 장점
- 여러 서버에 동일한 환경 구성시 Docker를 활용한 좋은 사례가 많다.
- 장애 상황 발생시 기존 서버 환경을 Docker 이미지로 간단하게 구현할 수 있다.
- Docker에 이미지를 한번 생성해 놓은 후 매우 간편하게 동일 환경을 쉽게 재현 가능
- Docker Registry Server를 통해 서버 환경에 대한 버전 관리가 가능
- 웹 서버 환경 구축과 관련한 수많은 반복적인 설정 작업을 매우 간단하게 작업 가능
Annotation 동작 원리 : hirlawldo.tistory.com/43
RabbitMQ : brunch.co.kr/@springboot/298
몽고DB와 RDBMS 비교 : sjh836.tistory.com/98
DB - MongoDB 샤딩(Sharding,분산처리 등) : https://coding-start.tistory.com/275
Spring boot에 Redis(Lettuce) : cafe.naver.com/architectmap/44
Docker 장점 및 간단 설명 : niceman.tistory.com/35
MapStruct : velog.io/@jjang9b/JAVA-MapStruct
'프로그래밍 > IT면접' 카테고리의 다른 글
[IT면접] 티몬 (1) | 2021.03.24 |
---|---|
[IT면접] 우아한 형제들 (0) | 2021.03.08 |
[IT면접] 현대오토에버 (0) | 2021.03.08 |
[IT면접] 아모레퍼시픽 (0) | 2021.03.05 |
[IT면접] 티맵모빌리티 (0) | 2021.03.05 |
[기술면접] JAVA 개발자 기술면접 예상 질문 (1) | 2021.02.25 |