1. 코틀린에서 move instance method 리팩토링 기능 활성화하기 [ move instance method 리팩토링 기능 소개 ] 예를 들어 신용카드를 발급하는 유스케이스가 있고, 신용카드 발급을 위해서는 기본적으로 사용자가 20세 이상의 성인이여야 한다고 하자. 해당 코드는 자바로 다음과 같이 구현할 수 있다. @Getter @Builder @NoArgsConstructor @AllArgsConstructor public class User { private int age; } @Service @RequiredArgsConstructor class IssueCreditCardUseCase { public void issue(User user) { if (isAdult(user)) { .....
1. 유용한 개발 관련 아티클 및 영상 #6 Twitter는 어떻게 1초에 3,000개의 이미지를 처리하고 있나? 트윗 작성과 미디어 업로드를 분리함, 각 프로세스를 독립적으로 최적화할 수 있었음 또한 업로드를 분리함으로써 도중에 실패해도 계속할 수 있도록 해서 미디어 업로드 실패율이 크게 줄음 20일이 넘은 이미지는 액세스될 가능성이 떨어짐을 파악하고 최적화를 진행함 출처: https://www.mimul.com/blog/how-twitter-handles-3000-images-per-second/ SRE의 프롬포트 활용 예시 Canva의 SRE 팀은 서비스 장애 발생시 일어나는 모든일을 자세히 기록하고, 후 장애 리포트 작성을 ChatGPT의 도움을 받아 깔끔하게 작성하는 프로세스를 적용했다고 함 귀..
1. 스레드 로컬(ThreadLocal)과 상속 가능한 스레드 로컬( InheritableThreadLocal)에 대하여 [ 스레드 로컬(ThreadLocal)이란? ] 자바는 오랜 기간 동안 동시성 처리를 위해 스레드를 사용해왔다. 대표적으로 스프링 프레임워크는 멀티 스레드 모델을 사용하고 있으며, 1개의 요청을 1개의 스레드가 처리하는 thread-per-request 방식으로 동작하고 있다. 자바는 각각의 스레드 별로 필요한 정보를 저장할 수 있는 스레드 로컬(Thread Local)이라는 기술을 제공하고 있다. 각각의 스레드는 살아있는 한 ThreadLocal에 접근할 수 있는 암묵적인 참조를 갖는 것이다. 이러한 스레드 로컬은 다음과 같이 활용할 수 있다. 스레드 내에서 공유할 값을 저장하고 어..
1. 유용한 개발 관련 아티클 및 영상 #5 성장하고 싶은 당신이 꼭 해야 하는 인지적 활동 먼저 노력과 학습으로 지적 능력을 통제할 수 있다고 믿는 성장 마인드셋이 필요함 성장 마인드셋을 가진 사람들은 어려운 도전을 받아들이고 어려움을 버틸 가능성이 높음 성장 마인드셋을 가지고 지속적인 학습으로 지식을 축적하여 인지적 활동의 기반을 쌓아야 함 인지적 활동으로는 다음과 같은 것들이 있음 자신을 돌아보고(self-reflectivity) 노출하라(자신을 관찰하고 기록하고 분석함) 정보들을 인출하고 정교화하라 자신만의 것으로 생성하라 출처: https://yozm.wishket.com/magazine/detail/2394/ 29CM 의 이굿위크 장애대응 기록 장애 원인 예상 보다 훨씬 많은 트래픽이 인입됨(..
1. Nested Class(중첩 클래스)에 대한 자바 스펙 문서 정리 [ Nested Class(중첩 클래스)에 대하여 ] 자바에서는 한 클래스 내에서 다른 클래스를 정의할 수 있는데, 이를 nested 클래스라고 한다. nested 클래스는 다시 static 클래스와 non-static 클래스로 나눌 수 있다. static: static nested class라고 부름 non-static: inner class라고 부름 class OuterClass { // inner class 라고 부름 class InnerClass { ... } // static nested class 라고 부름 static class StaticNestedClass { ... } } nested 클래스는 해당 클래스를 둘러싸는..