본문 바로가기

Backend7

[Java] synchronized로 동시성 이슈 해결하는 원리 안녕하세요! NewCodes입니다! 최근에 Spring&Java로 과제테스트를 봤었다. 이때 동시성 이슈와 관련한 요구사항이 있었다. 하지만 평소에 동시성 이슈 해결에 관해서 Atomic한 접근 방법만 써봤었다.그래서인지 다양한 동시성 문제 해결 방법 중 해당 과제에서 적합한 방법을 잘 녹여내지 못했다. 이번을 계기로 Java에서 동시성 이슈를 해결하는 방법들이 어떤 게 있는지 알아보려한다!우선 첫 번째로 synchronized 키워드에 대해서 자세히 알아보자! 📍 용어 정리관련 용어부터 확실히 하고 들어가자! 동시성 (concurrency)하나의 시스템에서 여러 작업이 동시에 실행되는 것처럼 보이게 하는 개념주로 멀티스레드를 통해 동시성 높은 처리를 함동시성 이슈이러한 동시성으로 인해 생기는.. 2025. 6. 7.
Node.js에서 readFileSync를 쓰면 안 되는 이유 (feat. Event Loop) 안녕하세요! NewCodes입니다! Node.js에서`readFileSync`를 써보신 적이 있으신가요? `readFileSync`는 특별한 경우를 제외하고써서는 안 되는 함수입니다. `readFileSync`를 쓰면주방에 있는 셰프가 멈추는 것과도 같습니다. 그러면 주방이 돌아가질 않고, 음식이 늦게 나오겠죠? Node.js에서도 마찬가지입니다. 여러분이 웹 애플리케이션 서버를 만들고 있는데`readFileSync`를 썼다면성능이 매우 떨어질 것입니다. 특히, 사용자가 동시적으로 몰린다면요! 이 글의 주요 목적은 단순히'readFileSync를 쓰면 안 된다.'에서 끝나진 않습니다. 소중한 main thread가 block되지 않게 하자! 를 전달하는 게 주요 목적입니다!! 우선 .. 2025. 5. 17.
실시간 게임 서버 성능 최적화 - 한 게임방에서 200명이 플레이?! 안녕하세요! NewCodes입니다! 실시간 퀴즈 게임 플랫폼 프로젝트에서성능 최적화한 경험을 공유하고자 합니다! 부하테스트를 통해 메트릭을 수집했고, 병목의 원인을 분석했습니다. 그리고 최적화한 방법까지자세하게 남겨보고자 합니다! 📍 한 게임방에 200명을 지원하고자 한 이유 한 게임방에 200명을 지원하고자 한 이유는..! 팀의 목표였기 때문입니다!한 게임방 내 200명의 플레이어가 원활히 플레이할 수 있게 구현 그런데 왜 200명일까요? 저희의 서비스가 사용되길 기대하는 상황은 위와 같았습니다. 대규모의 인원이 한 장소에서 즐겁게 아이스브레이킹, 레크리에이션 등의 용도로 사용되길 원했습니다. 그러면 지루할 수도 있는 강연이나 회의장에서도 즐거움을 더해줄 수 있으니까요! 그리고 네이버 부스트캠프 .. 2025. 1. 8.
Artillery를 통한 Socket.io 게임 서버 부하테스트 경험기(feat. TIP) 안녕하세요! NewCodes입니다!  이번에는 Node.js + Socket.io 게임 서버를부하테스트했던 경험에 대해서 적어보려 합니다! Socket.io 부하테스트 관련 레퍼런스가 많이 없어시행착오를 많이 겪었습니다.  그래서 해당 경험을 정리하며,비슷한 상황에 있는 분께 도움이 됐으면 해서TIP까지 정리해보고자 합니다.   이 글은 처음부터 순서대로 읽는 걸 추천드리며,TIP은 마지막에 정리되어 있습니다.  📍 부하테스트를 하고자 했던 이유부하테스트를 하고자 했던 이유는 간단합니다. 팀의 목표 때문이었습니다.  한 게임방 내 200명의 플레이어가 원활히 플레이할 수 있게 구현  그런데 왜 200명일까요? 저희의 서비스가 사용되길 기대하는 상황은 위와 같았습니다.  대규모의 인원이 한 장소에서 즐겁.. 2025. 1. 1.
JWT를 직접 구현하면서 토큰 인증 방식에 대해 알아보자! 안녕하세요!NewCodes입니다! 이번에는 JWT에 대해 다뤄보겠습니다! JWT는 토큰 인증 방식 중에 하나인데요.   이 글을 읽으시기 전에사전 지식으로 다음 글을 추천드려요! 인증과, 인가 더 이상 헷갈리지 말자세션 인증 방식, 이 글 하나로 끝내자! 인증과 인가, 세션에 대해 잘 알고 계시다면이번 글도 수월하게 읽으실 수 있을 거예요~  최대한 이해를 돕기 위해 직접 만든 그림도 있답니다~ 😁 그러면 바로 시작해볼게요! 🪙 '토큰'이 뭐지?우선 토큰이 뭘 의미하는 걸까요?   지하철 탈 때 이러한 토큰 보신 적 있나요? (요새는 거의 카드를 쓰긴 하죠 ㅎㅎ) 이 토큰을 통해 우리는 지하철을 탈 권리가 있음을 증명할 수 있습니다.  이외에도 토큰이라는 단어는 정말 여러 가지 맥락에서 쓰일 수 있습.. 2024. 10. 13.
세션(session) 인증 방식, 이 글 하나로 끝내자! 안녕하세요!NewCodes입니다!   세션 기반 인증이 글 하나로 끝내겠습니다!!  사전 지식으로 아래 글을 통해인증과 인가가 무엇인지 알고 오시면 좋습니다!인증과 인가, 더 이상 헷갈리지 말자!  읽으면서 바로 이해가 안 되는 부분이 있을 수도 있어요! 아직 잘 몰라도 괜찮아요!처음에는 세션을 배우는 게 어렵답니다 ㅠㅠ 그래도 우선은 흐름따라 쭉 내려가면서 읽어보시는 걸 추천드려요!  이 글은 세션에 대해서만 다루고, 다음 글에서는 JWT에 대해 다룰 예정입니다!  지금 시작합니다! 🧐 세션과 JWT, 이런 거 왜 필요해? 세션과 JWT를 본격적으로 다루기 전에, 이게 왜 필요한 지 그 배경을 알아봅시다!HTTP를 잘 들여다보면 세션이 왜 필요한지 알 수 있는데요!  웹에서는 기본적으로 HTTP를 통.. 2024. 10. 3.
인증과 인가, 더 이상 헷갈리지 말자! 안녕하세요!NewCodes입니다!  인증과 인가에 대해저번에 공부한 적이 있었는데요.  몇 개월 뒤에 다시 보니잘 기억이 안 나더라고요 ㅎㅎ..  그래서 이번 기회에확실히 기억하고 싶어서 이렇게 정리합니다!  이 글의 목적은 해당 본문만 봐도인증과 인가에 대해 큰 그림이그려질 수 있도록 하는 것입니다!!  시작하겠습니다!!  🔐 인증 (Authentication) 인증이란 '사용자가 누구인지 증명'하는 과정입니다.   인증은 흔히 로그인을 통해 이루어집니다. 사용자가 계정과 비밀번호를 입력하면, 서버에서는 유효한 사용자가 맞는지 확인합니다.  요새는 FaceID, 지문인식 등을 통해 인증이 이루어지기도 합니다.  인증에서 핵심은 '내가 누구인지를 증명'하는 것이고, 로그인과 FaceID 등은 인증을 위.. 2024. 9. 16.
반응형