ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 에프랩(F-Lab) Node.js 백엔드 2개월 후기
    F-Lab 2025. 1. 16. 09:34
    728x90



    안녕하세요. 어느덧 시작한지 2달이 지났다는게 실감이 잘 나지 않네요. 그만큼 시간이 빠르다는거겠죠 ㅎㅎ

    이번달 진행상황


    2달차에는 본격적인 프로젝트와 os를 중점적으로 공부 했습니다.
    OS에 대해서 정말 공부가 많이 부족했던점과 이게 왜 중요하고 프로젝트를 진행 하면서 공부 했던 내용들이 눈에 보이기 시작하면서 이전에 이런것들을 모르고 일을 했던 제가 부끄러웠습니다.


    깨달았던점


    프로세스와 스레드의 차이점을 확실히 알게되고 스레드풀에 대해서 공부하게 되면서 Node.js가 싱글 스레드로 동작 한다라는 것은 맞습니다. 메인 스레드가 싱글 스레드입니다. 그러나 이벤트 루프를 다시 보게 되면 이상한점이 한가지 있습니다. 바로 이벤트 루프에서 하나의 스레드를 가지고 파일 읽기 같은 i/o작업을 실행하기 위해서 하나의 싱글 스레드로 처리하기엔 역부족이라는것입니다. 이러한 작업을 처리하기 위해서 node.js에서는 libuv 라이브러리를 이용하여 처리 할 수 있게 동작 합니다. libuv는 기본적으로 4개의 스레드풀을 생성 합니다. 여기서 완료된 콜백들을 이벤트루프의 Phase에 쏙쏙 넣어주는거죠. 스레드풀이란 개발자가 직접 생성하고 관리하는 스레드와 달리 소프트웨어에서 관리 해주는 소프웨어 기술입니다. 그리고 기본적으로 미리 스레드풀 몇개를 생성해서 바로바로 할당하게 해줍니다. 여기서 libuv는 기본 4개의 스레드풀을 생성 합니다.

    이런식의 중요한 기본기인 cs를 공부하면서 진행 하다보니 이전에 아무생각없이 하던것들 놓치고 있던 부분들이 눈에 보이기 시작 했습니다.

    예를 들어 cypto나 파일 읽기 등과 같은 I/O작업들이 빈번하게 발생하는 상황에서 이런 I/O작업들을 libuv 스레드풀을 통해서 동작하게 되어 있는데 이때 이러한 작업들은 CPU 이용률을 많이 차지하여 4개의 스레드풀로 처리하지 못하게 되면 CPU 이용률이 급격하게 오르게 됩니다. 이때 CPU 바운드 문제라고 판단하여 CPU 코어수를 늘려도 되지만 이는 근본적인 문제 해결 방법이 아니라 왜냐하면 4개의 스레드풀을 꽉 차게 되면 더 많은 작업들을 처리하지 못하는거죠. libuv 스레드풀을 늘리게 되면 해결 되는 경우도 확인 할 수 있습니다. 하지만 이런 스레드풀을 무작정 많은 수로 늘리게 된다면 이는 곧 컨텍스트 스위칭 비용이 굉장히 증가하여 높은 오버헤드를 발생 시키기 때문에 주의 할 필요가 있습니다.


    멘토님 만족도

     

    에프랩을 통하지 않았다면 내가 언제 이런분과 대화를 나눠보고 나라는 사람을 피드백 받을 수 있을까라는 생각이 많이 들었습니다. 그만큼 멘토님의 만족도는 최상이고 내가 노력하는 만큼 이미 알고 있는 지식의 깊이만큼 더 많이 배우고 얻어 갈 수 있는것 같습니다. 지속적으로 하면서 잘못된 공부 방법과 습관과 생각하는 방법들을 연습을 계속 해야 될것 같습니다. 멘토님과의 멘토링 시간을 경험하면서 저에게는 이전과 이후의 변화가 확실히 몸으로 느껴지고 개발뿐만 아니라 여러가지로 많이 배우고 있습니다.

     

     

    끝으로

     

    벌써 반이나 달려 왔는데 제 나름대로 열심히 하고 있다고 생각 하는데 확실히 열심히 하는것과 잘하는것은 별개인것 같습니다. 남은 멘토링 시간동안 계속 발전하기 위한 노력을 통해 잘할 수 있는 개발자가 되도록 노력 해야 될것 같아요. 모두가 잘하고 싶은 마음은 다 똑같을텐데 아무리 열심히 하더라도 그 방향이 잘못되었다면 올바른 길로 더 효율적인 길로 갈 수 있는 방향성을 제시해주는 에프랩과 멘토링 프로그램을 적극적으로 추천하며 본인 스스로의 계획으로 1년 공부 하는것과 에프랩에서의 4개월의 시간은 비교불가 하다는것을 알게 되었습니다.
    728x90

    'F-Lab' 카테고리의 다른 글

    에프랩(F-Lab) Node.js 백엔드 1개월 후기~  (0) 2024.12.04
Designed by Tistory.