[유데미] Java 멀티스레딩, 병행성 및 성능 최적화 - 전문가 되기 후기
서론
Java 언어로 개발을 한 지 벌써 3년이 넘었다.. 세상에
지난 시간을 돌아보니 나는 요구사항에 맞춰 애플리케이션 코드를 적절하게 구현했으나 그 이상의 성능 최적화를 진행한 적은 없었다. 그래서 성능 튜닝에 대해 갈급함을 늘 느끼고 있었다.
게다가 JDK 21에서 가상 스레드를 공식 feature로 제공하는데 멀티스레딩이나 스케줄링 등 관련된 내용을 잘 몰라서 언젠간 공부해야겠다는 일종의 부채의식을 가지고 있었다.
그리고 특히 비전공자로서 CS 지식이 부족하다는 생각을 늘 가지고 있었기 때문에 운영체제 관련된 이야기만 나오면 나는 종종 긴장하기 일쑤였다.
그러던 차에 마침 글또 x 유데미 협찬으로 “Java 성능 최적화 강의”가 있어 신청하여 듣게 되었다.
이 강의를 통해서 내가 얻고 싶었던 점은
- 애플리케이션의 성능을 높이는 데 어떤 부분을 신경 써야 하는지
- 신경 쓰지 않을 때 최악의 경우 어떤 상황이 발생할 수 있는지
- 배운 이론을 실무에 어떻게 적용할 수 있는지 위의 내용들을 기대하고 해당 강의를 신청하였다.
강의에서 다루는 내용
해당 강의는 총 5.5시간 강의이다. (하지만 나는 정리하면서 학습하다보니 일주일이나 걸렸다..ㅎ)
해당 강의는 Java를 사용하는 개발자가 애플리케이션을 개발할 때 지연 시간이나 처리량 등 성능 지표를 어떤 방법을 통해 높일 수 있을지 관련 개념을 설명하고 직접 코드를 작성하는 형태로 진행한다.
이를 위해 Java의 관련 클래스와 메서드를 무작정 외우는 게 아니라, 어떤 개념을 왜 알아야 하는지 그 당위성을 알려주고, 관련된 시스템의 작동 방법을 친절하게 알려준다.
아래는 각 섹션에서 나오는 개념들이 어떻게 유기적으로 연결되는지 보여주기 위해 필기의 일부분이다.
가장 첫 세션에서 OS가 어떤 일을 하고, 프로세스와 스레드가 어떻게 구성되는지, 그리고 스케줄링이 어떤 기준에 의해 동작하는지 등을 알려준다. 이러한 배경 설명을 먼저 듣고 나서, 실질적으로 어떻게 Java 코드를 통해 성능을 향상할 수 있는지를 배우기 때문에 더 이해가 쏙쏙 되는 듯하다.
좋았던 점
다양한 그림 설명과 친절한 예시
사실 이전에도 운영체제에 대한 이론은 정처기를 취득할 때 이론을 공부했기 때문에 대략적으로는 알고 있었다. 하지만 운영 체제의 동작 흐름은 코드나 물리적인 하드웨어처럼 눈에 보이지 않다 보니 동작 방법을 글로만 접하게 되면 완전히 이해되는 것이 아니라 피상적으로 문장만 외워지는 경향이 있다.
해당 강의에서는 개념을 추상화하여 이해하기 쉬운 애니메이션으로 보여주고, 작업 프로세스는 도표로 시각화하여 이론을 단순히 외우지 않고 자연스럽게 이해할 수 있도록 만든다.
실습 코드 제공
강의는 이론 설명뿐만 아니라 간단한 코드도 직접 타이핑하여 배운 내용을 어떻게 적용할 수 있는지를 보여준다. 코드를 보며 직접 따라 쳐도 좋지만 그러면 시간이 너무 오래 걸리니 나의 경우는 제공해 주는 예제 코드를 다운받아 실행해 보고, 한 줄씩 주석을 달아가며 공부했다.
가끔 어떤 강의들은 제공해 주는 예제가 작동하지 않거나 설정이 어려워 실행하는 데 어려움을 겪곤 했는데 해당 강의는 간단하고 핵심적인 예제를 제공해서 무리 없이 실행할 수 있었다.
내용 정리 퀴즈와 구현 과제
강의에서 가장 좋았던 점은 한 섹션이 끝날 때마다 배운 내용을 확인하는 퀴즈가 2~3개씩 있어서 내가 제대로 이해했는지를 적극적으로 복습할 수 있었다는 점이다.
수업을 들을 땐 모든 게 당연하고 다 이해가 되는 것처럼 느껴진다. 배운 모든 것이 머릿속에 들어있는 것 같지만 막상 문제를 풀어보면 갑자기 낯설게 느껴지고 어떤 부분이 어려운지 바로 알게 된다.
퀴즈를 풀면 틀린 문제를 확인할 수 있다. 근데 틀린 문제에 대한 해설이 자세하진 않아서 해설만 온전히 믿을 순 없다. 직접 따로 구글링하자.
퀴즈 외에도 5개의 코딩 연습 문제가 있다. 퀴즈보다는 확실히 직접 손으로 타이핑을 쳐야 제대로 학습이 되는 것 같다.
문제는 큰 에러가 나지 않으면 그냥 성공으로 넘어가는 것 같은 느낌이 있긴 하지만 코딩 연습에 대한 해설이 있어서 문제를 제대로 파악했는지 확인할 순 있다.
아쉬운 점
영어의 장벽
한글 자막이 제공되긴 하지만 그래도 영어 강의에 대한 낯섦은 어쩔 수 없는 것 같다.
귀로는 영어가 들리고 눈으로는 한글을 보니 머릿속에서 멀티태스킹이 일어나는 느낌이다.
그래도 한글 자막이 없어 눈치로 때려 맞추고 코드만으로 공부하던 것과 비교하면 너무나 좋아진 환경이니까..!!
인터넷 강의의 좋은 점이 언제든 일시 정지할 수 있다는 점이니 속도에 욕심부리지 않고 차근히 학습하면 무리는 없을 거로 보인다.
강의 질문
개인적으로 강의를 볼 때 다른 사람들이 올린 질문을 많이 보는 편이다. 다른 사람들의 질문을 보면서 내가 생각지 못했던 포인트들을 발견할 때도 많아 생각의 확장이 이루어지는 경우가 많기 때문이다.
이 강의만 그런진 모르겠으나 해당 강의는 전체 질문이 8개 밖에 없어서 개인적으로 아쉬웠다.
추천하는 사람
- 어느 정도 자바를 다루어봤고, 성능에 대한 고민을 시작한 사람
- 자바 애플리케이션의 성능 향상을 실무에서 도입하기 전 가볍게 관련 개념을 익히고 싶은 사람
- OS와 자바 애플리케이션의 상호작용에 대해 좀 더 알고 싶은 사람
결론
해당 강의는 성능 튜닝에 있어서 중요한 키워드의 특징과 동작 방식을 가볍게 알려주긴 하지만 실제 프로젝트에 적용하는 코드나 세세한 부분까지 모두 알려주진 않는다. 따라서 백그라운드가 전혀 없는 사람이 이 강의만 듣고 “바로 실무에 적용해서 성능 향상을 이루어내겠다!”는 무리가 있을 것 같다.
하지만 성능 최적화에 필요한 개념을 빠르게 훑어보는 용도로 본다면 아주 적합한 강의라 생각한다. 강의를 보며 스스로 본인만의 예제를 만들어보고, 강의에 나온 키워드만이라도 공부를 잘 해둔다면 큰 도움이 될 것 같다.
댓글남기기