본문 바로가기

programming/CS

(2)
[Spring] 동시성 문제와 해결방법 알아보기 이번 포스팅에서 알아볼 문제는 동시성 문제입니다. 오늘은 동시성 문제에 대해 간략하게 설명하고, 자바에서 synchronized를 활용하여 동시성 문제를 해결하는 방식을 알아보고자 합니다.뒤에서 언급할테지만 이 방식은 단순히 '여러 스레드의 동시 접근을 막는 방식'이기 때문에 프로세스 내에서만 유효하다는 단점이 있다. 즉, 다중 서버(Scale Out)로 운용하는 서비스에서는 synchronized를 사용하더라도 동시성 문제를 해결할 수 없다. 따라서 데이터베이스에 락을 걸어 동시 접근을 차단하는 방식이 더 적합할 수 있다. 이와 관련해서는 추후 DB Lock 포스팅을 작성하여 정리하고자 한다. 동시성 문제동시성 문제란, 하나의 자원에 여러 스레드가 동시에 접근하여 데이터 정합성이 지켜지지 않은 것을 의..
[객체지향] SOLID 원칙 이해하고 적용하기(+ 일급 컬렉션) 최근 소셜 로그인 구현 코드를 리팩토링하는 과정에서 SOLID 원칙을 조사하고 적용해보았습니다. 따라서 이번 포스팅에서는 SOLID 원칙 설명과 리팩토링 과정을 정리하고자 합니다. 💡 배경 & 문제 인식이전에 소셜(카카오) 로그인 API를 서버측에 구현했는데, 문득 서비스에 새로운 소셜 로그인이 추가될 경우 현재 코드 설계는 적합하지 않다고 판단했습니다. 그 근거는 아래와 같습니다. 위의 UML 클래스 다이어그램은 기존 카카오 소셜 로그인 기능의 설계 구조입니다. 우선 소셜 로그인에 사용되는 객체가 모두 구현체로 정의되어 있는 것을 확인할 수 있습니다. 즉, 만약 서비스에 새로운 소셜 로그인이 추가되는 경우에 해당 소셜 로그인에 알맞는 컨트롤러 구현체, 서비스 구현체를 그때그때 구현해야 한다는 것입니다..