일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 온라인강의
- 글또
- Redis
- class-transformer
- gradle
- TypeScript
- IAC
- mysql
- 이더리움
- ChatGPT
- restdocs
- corretto
- Nestia
- nestjs
- Mocha
- 도서
- 리뷰
- spring
- 유데미
- java
- Database
- 백엔드
- docker
- chai
- 블록체인
- blockchain
- terraform
- nodejs
- terraform cloud
- typeorm
- Today
- Total
끄적끄적
[유데미(Udemy)] Java 멀티스레딩, 병행성 및 성능 최적화 - 전문가 되기 후기 본문
[Java 멀티스레딩, 병행성 및 성능 최적화 - 전문가 되기]
개발할 때 자주 찾아보고 어려워하는 부분이 동시성과 병렬성 부분이다. 특히나 처음 개발을 접하는 사람들은 이 두 용어 자체를 헷갈려 할 정도이며 최근 트랜드는 하나의 서버가 아닌 scale out 을 통해 여러 서버를 사용하기도 한다. 물론 이 강의는 이 부분을 다룬 강의는 아니며 오로지 하나의 프로그램에서 Java Thread 사용법을 알려주는 강의 이다.
필자는 Typescript 를 메인 언어로 다루고 있어 정확히는 잘 모르지만, Java 를 사용하는 대부분의 개발자들은 이미 Spring (boot) 를 통해 추상화된 상태로 쓰레드를 사용하고 있기 때문에 Thread 를 다룰 일이 크게 없다고 생각할 수 있다. 그러나 Spring 을 처음 공부할때 나오는 ThreadLocal, 쓰레드 풀 등에 대해서는 한 번쯤 들어봤을 것이다. 물론 이 강의는 Spring 에서 사용하는 여러 쓰레드 기법을 설명하지는 않고 기초적인 사용법과 개념에 대해서만 설명한다는 것은 알아두었으면 한다.
강의는 우선 Java 에서 Thread 를 만들고 실행시키는 방법에 대해서 설명한다. 그 후에 Latency 와 Throughput 에 대한 차이를 설명하면서 이미지처리를 병렬적으로 빠르게 처리하는 방법(Latency 최적화), 쓰레드 풀을 활용해 한번에 HTTP 요청을 받는 방법(Throughput 최적화) 에 대해 100 줄 정도의 간단한 자바 코드를 활용해 설명한다. 이후에는 여러 쓰레드가 동시에 작업을 진행할 때 데이터 동기화를 어떻게 해야 하는지에 대해 여러 파트에 걸쳐 설명한다. 그 때 나오는 개념이 자바 내부에서 힙과 스택이 사용되는 방식, 세마포어, synchronized, ReentrantLock 등 개발할 때 직접적으로는 잘 사용하지 않지만 공부할 때는 한번쯤 사용했을 법한 문법이다. 그 후 최근들어 개발자들 사이에서 관심이 많아지고 있는 Blocking IO 와 Non-Blocking IO 에 대한 이야기를 하면서 Spring 에서 주로 사용하는 톰켓 방식의 Thread per Task(Request) 모델, Netty 등에서 사용하는 방식인 Event Loop 에 대해서 설명해준다. 마지막으로는 자바 21 에서 최신으로 등장한 Virtual Thread 에 대한 개념을 간단한 예제와 함께 설명하고 강의는 끝이 난다.
강의를 들으면서 예전에 학교에서 OS 를 수강했을 때의 기억이 났다. OS 를 배울 때도 프로세스와 쓰레드 그리고 세마포어와 락 등을 활용하면서 어려워했던 기억이 있었다. 하지만 이 강의는 그 때의 강의와는 다르게 어려운 개념보다는 쉬운 개념을 위주로 간략하게 예제와 함께 설명하기 때문에 수강하는 동안 어려움이나 이해되지 않는 부분은 크게 없었다. 다만 강의에서 간단하게 문법 정도만 짚고 정말 간단한 예제만을 사용하는 만큼 실무에서 활용하려면 더 많은 연습이나 공부가 필요할 것으로 보였다.
강의 주제는 어려운 주제이지만 내용 자체가 어렵지 않기 때문에 병렬성과 동시성에 대해서 막연한 두려움을 가지고 있거나 한번 공부해보고 싶은 개발자가 있다면 수강하면 좋을 것 같다. 짧은 시간 안에 개념을 간단하게 짚고 넘어갈 수 있기 때문에 자바 개발자가 아니더라도 한 번쯤 수강해본다면 정말 좋은 강의라고 생각한다. 참고로 필자도 Typescript 위주로 개발하지만 괜찮다고 느꼈다.
할인할때 구매하면 Udemy 강의는 합리적으로 구매할 수 있기 때문에 강의 수강에 대해 추천할 수 있을 것 같다.
해당 콘텐츠는 유데미로부터 강의 쿠폰을 제공받아 작성되었습니다.
'리뷰 > 강의리뷰' 카테고리의 다른 글
[유데미(Udemy)] 화이트 해킹 101: 윤리적 해킹 기초부터 배우기 후기 (0) | 2024.04.28 |
---|