요약 스프링 부트는 AutoConfiguration 기능을 제공함. 스프링부트가 제공하는 자동 구성 기능을 이해하려면 다음 두 가지 개념을 이해해야함. @Conditional : 특정 조건에 맞을 때 설정이 동작하도록 함. @AutoConfiguration : 자동 구성이 어떻게 동작하는지 내부 원리 이해. 스프링부트가 제공하는 자동 구성 기능을 이해하려면 다음 개념을 이해해야 함. @Conditional : 특정 조건에 맞을 때 설정이 동작하도록 함. @AutoConfiguration : 자동 구성이 어떻게 동작하는지 내부 원리 이해 자동구성 - 예제 만들기 @Slf4j @Configuration public class DBConfig { @Bean public DataSource dataSource(..
Motivation (동기 부여) k8s로 전환할 때 가장 큰 문제 중 하나는 표준 롤링 업데이트처럼 정교한 배포 전략을 어떻게 설정할 수 있는지다. k8s에서 제공하고 있는 표준 롤링 업데이트는 모든 요구사항을 만족할 수 없기 때문이다. 새 버전을 배포하려고 할 때를 예로 들어보자. 새 버전 서비스가 제대로 작동하는지 테스트 먼저 진행 1번 결과가 정상인 경우, 모든 서비스를 새 버전으로 전환 이런 배포 전략을 Blue/Green 배포라고 한다. 먼저 k8s 리소스만 이용해서 Blue/Green 배포를 수행해보고자 한다. Simple Blue/Green with Only k8s 책에서는 ELB(AWS Load Balancer)를 사용하였으나, 외부 IP 노출이 어려워 NodePort로 수정해서 작업 진..
들어가기 전 자바에서 Enum을 이용해서 효율적인 코딩을 할 수 있는 것처럼 파이썬에서도 Enum 클래스가 지원되기 시작했다. 사용법이 자바와는 조금 다른데, Enum 클래스를 사용하는 방법의 기초를 터득해보고자 한다. 요약하면 다음과 같다. Enum을 이용해서 타입을 표현할 수 있음. Enum을 이용해 인스턴스들을 표현할 수 있으며, 람다 함수와 함께 이용하면 응집력 있게 다형성을 구현할 수 있음. Enum을 이용해 타입을 표현할 수 있기 때문에 typing 라이브러리와 함께 사용했을 때, 파이썬을 좀 더 단단하게 만들 수 있음. (타입 힌트를 줄 수 있기 때문임) https://github.com/chickenchickenlove/solid-python/tree/main/chapter8 Enum을 사..
아이템 48. 스트림 병렬화는 주의해서 적용하라. 스트림 병렬화는 paralle() 메서드를 호출해서 할 수 있음. 스트림 병렬화를 할 때는 Spliterator 객체의 trySplit() 메서드를 호출해서 각 쓰레드별로 진행할 작업을 나눔. 객체별로 고유한 Spliterator가 구현되어 있지 않으면, Stream 클래스의 Spliterator를 사용함. 병렬 스트림이 효율적이지 않은 경우 작업을 효율적으로 나누지 못하는 경우. (Spliterator가 없는 경우, 자료구조가 적합하지 않은 경우) 데이터 소스로 Stream.iterate를 사용하는 경우. 스트림 중간에 limit()을 사용하는 경우 병렬 스트림이 효율적인 경우 작업 나누기 쉬운 자료구조 + 참조 지역성이 좋은 경우. 예를 들면 배열, ..
Collectors 요약 stream의 collect() 메서드에는 Collectors 패키지와 관련된 것들을 요구한다. 이 때, Collectors로 할 수 있는 일들을 간략히 요약하면 다음과 같다. counting maxBy, minBy summingInt, summingLong, summingDouble averagingInt, averagingLong, averagingDouble summarizingInt, summarizingLong, summarizingDouble joining toList, toSet, toCollection 다수준 그룹화 groupingBy, collectingAndThen 분할 partitioningBy Collector를 이용한 count() 연산 final User..