일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- 쿠버네티스
- 보조스트림
- Stream
- Real MySQL
- thread
- OS
- JPA
- mysql
- gradle
- Java
- 자바 ORM 표준 JPA 프로그래밍
- 토비의 스프링
- 이스티오
- Kotlin
- 토비의 스프링 정리
- jvm
- IntellJ
- spring
- Collection
- K8s
- SpringBoot
- 스트림
- list
- 자바
- GC
- 백준
- 스프링
- MSA
- Stack
- redis
- Today
- Total
목록2021/11 (4)
인생을 코딩하다.
스레드 안전성이란 무엇일까요? 여러 스레드가 클래스에 접근할 때, 실행 환경이 해당 스레드들의 실행을 어떻게 스케줄하든 어디에 끼워 넣든, 호출하는 쪼에서 추가적인 동기화나 다른 조율 없이도 정확하게 동작하면 해당 클래스는 스레드 안전(Thread-Safe) 하다고 말할 수 있습니다. 간단히 말해서 여러 스레드가 클래스에 접근할 때 계속 정확하게 동작하면 해당 클레스는 스레드에 안전하다고 말할 수 있습니다. 특히, 멀티 스레드를 사용할때 스레드 안전성을 잘 고려하여 설계해야합니다. 객체 지향 프로그램에서 멀티 스레드를 잘 활용하면 훨신 좋은 성능의 프로그램을 설계할 수 있지만, 멀티 스레드를 활용할떄는 주의할 점이 있습니다. 여러 스레드가 변경할 수 있는 하나의 상태 변수를 적절한 동기화 없이 접근하면 ..
프로그램을 제대로 돌아가게 작성하는 일은 어렵습니다. 하지만 여러 작업을 동시에 실행하는 프로그램을 제대로 돌아가게하는 것은 더 어렵습니다. 다시 말해 여러 작업을 동시에 실행하는 작업은 순차적으로 실행하는 프로그램보다 오류 발생 가능성이 높습니다. 그럼에도 우리는 왜 작업을 동시에 실행하는 문제에 신경을 써야 할까요? 스레드는 자바 언에에서 피할 수 없는 특성이고 복잡한 비동기 코드를 더 단순한 순차적 코드로 바꿔 복잡한 시스템을 단순하게 개발하 수 있게 해주기 떄문입니다. 게다가 스레드는 멀티프로세서 시스템의 능력을 최대한 끌어낼 수 있는 가장 쉬운 방법입니다. 프로세서 개수가 늘어날수록 여러 작업을 동시에 실행하는 일은 더욱 중요합니다. 스레드는 각기 별도의 프로그램 카운터, 스택 , 지역 변수를 ..
쿠버네티스 서비스 메시 패턴의 구현체인 Istio란? 초창기 MSA 기술인 넷플릭스 OSS나 스프링 클라우드 기반의 서비스를 구축 및 운용할 때의 문제점은 API 게이트웨이, 서비스 레지스트리, 컨피그 서비스와 같이 운영 관리를 위한 여러 개의 기반 서비스를 별도로 각각 만들어야 한다는 번거러옴과 더불어 아래 그림과 같이 업무 처리 마이크로서비스에 스프링 클라우드 서비스를 사용하기 위한 라이브러리를 비즈니스 로직과 함께 탑재해야 한다는 점이였습니다. 또한 스프링 클라우드는 자바 기반이기 때문에 마이크로서비스가 자바 외의 다른 언어로 폴리글랏하게 구현된 경우에는 스프링 클라우드 서비스를 아예 사용할 수조차 없습니다. 그런데 최근에는 MSA 문제 영역 해결을 위한 기능(서비스 탐색, 서킷 브레이커, 추적, ..
마이크로서비스별로 기능을 분리하고 저장소를 격리함에 따라 이전에는 불거지지 않았던 문제가 생깁니다. 즉, 여러개의 분산된 서비스에 걸쳐 비즈니스 처리를 수행해야 하는 경우 비즈니스 정합성 및 데이터 일관성을 어떻게 보장할 것인지에 관한 문제입니다. 손쉽게 적용할 수 있는 한 가지 방법은 여러 개의 분산된 서비스를 하나의 일관된 트랜잭션으로 묶는 것 입니다. 이것을 분산 트랜잭션 처리 패턴 이라고 합니다. 분산 트랜잭션 처리 패턴 2단계 커밋 방법 2단계 커밋 방법은 분산 데이터베이스 환경에서 원자성을 보장하기 위해 트랜잭션에 포함돼 있는 노드가 커밋되거나 롤백 하는 메커니즘입니다. 그런데 이 방법은 각 서비스에 잠금이 걸력 발생하는 성능 문제 탓에 효율적인 방법이 아닙니다. 특히 각 서비스가 다른 인스턴..