메인 글
-
실시간 게임 서버 성능 최적화 - 한 게임방에서 200명이 플레이?! 안녕하세요! NewCodes입니다! 실시간 퀴즈 게임 플랫폼 프로젝트에서성능 최적화한 경험을 공유하고자 합니다! 부하테스트를 통해 메트릭을 수집했고, 병목의 원인을 분석했습니다. 그리고 최적화한 방법까지자세하게 남겨보고자 합니다! 📍 한 게임방에 200명을 지원하고자 한 이유 한 게임방에 200명을 지원하고자 한 이유는..! 팀의 목표였기 때문입니다!한 게임방 내 200명의 플레이어가 원활히 플레이할 수 있게 구현 그런데 왜 200명일까요? 저희의 서비스가 사용되길 기대하는 상황은 위와 같았습니다. 대규모의 인원이 한 장소에서 즐겁게 아이스브레이킹, 레크리에이션 등의 용도로 사용되길 원했습니다. 그러면 지루할 수도 있는 강연이나 회의장에서도 즐거움을 더해줄 수 있으니까요! 그리고 네이버 부스트캠프 ..
-
Artillery를 통한 Socket.io 게임 서버 부하테스트 경험기(feat. TIP) 안녕하세요! NewCodes입니다! 이번에는 Node.js + Socket.io 게임 서버를부하테스트했던 경험에 대해서 적어보려 합니다! Socket.io 부하테스트 관련 레퍼런스가 많이 없어시행착오를 많이 겪었습니다. 그래서 해당 경험을 정리하며,비슷한 상황에 있는 분께 도움이 됐으면 해서TIP까지 정리해보고자 합니다. 이 글은 처음부터 순서대로 읽는 걸 추천드리며,TIP은 마지막에 정리되어 있습니다. 📍 부하테스트를 하고자 했던 이유부하테스트를 하고자 했던 이유는 간단합니다. 팀의 목표 때문이었습니다. 한 게임방 내 200명의 플레이어가 원활히 플레이할 수 있게 구현 그런데 왜 200명일까요? 저희의 서비스가 사용되길 기대하는 상황은 위와 같았습니다. 대규모의 인원이 한 장소에서 즐겁..
-
1초에 80,000번 Network I/O를 하면 생기는 병목을 분석해보자! 안녕하세요! NewCodes입니다! 저번 글에서 실시간 퀴즈 게임 프로젝트에 대해부하테스트와 성능최적화 글을 다루었습니다. Artillery를 통한 Socket.io 게임 서버 부하테스트 경험기실시간 게임 서버 성능 최적화 - 한 게임방에서 200명이 플레이?! 이번 글에서는 Network I/O가 어떻게 일어나는지고수준에서 저수준으로 깊게 파보려 합니다. 이번에는 병목의 원인으로 잡혔던 Network I/O에서 저수준에서 어떤 부분이 원인이었을지를 탐구해보겠습니다. 이를 통해 다음에 트래픽이 상승하여 서버에 부하가 생겼을 때,개선 방향은 무엇이 있을지 고민해보려 합니다. 이 글에서 다루고자 하는 내용Network I/O가 Node.js에서부터 시작해서 OS까지 이루어지는 과정 분석하기 I/O는 ..
-
카카오맵이 최적 경로를 결정하는 데까지 카카오맵에서 불편함을 느끼고, 궁금증을 해결하다. 안녕하세요! NewCodes입니다!! 우선 이전 포스팅에서제가 가졌던 궁금증에 대해 다시 살펴보겠습니다. 위 그림은 제가 사는 동네입니다. 보시다시피 1번 경로가 2번보다 훨씬 더 빠른 길입니다. 하지만, 카카오맵이 항상 2번 경로를 추천해줬습니다. 그래서 저는 카카오택시를 탈 때면 항상 시간과 돈을 불필요하게 소모하곤 했습니다. 이러한 현상이 1년 이상 반복되자저는 궁금해졌습니다. 카카오맵은 도대체 어떤 이유로2번 경로를 최적 경로로 추천할까? 길찾기 서비스는 어떤 원리로 동작할까? 드디어 이 궁금증에 대한 마침표를 찍고자 합니다!이를 위해 아래와 같은 과정을 거쳤습니다. 1단계: 가설 설정2단계: 다양한 길찾기 알고리즘 학습A* Al..
-
글쓰기, 개발자가 꼭 배워야 할 기술 (+실전 TIP) 안녕하세요, 부스트캠프 웹・모바일 9기Web 캠퍼 김상혁입니다. 멤버십에서는 매주 월요일 캠퍼끼리‘기술공유’ 시간을 가집니다. 이번에는 제가 기술공유에 신청했었습니다! “야 너도 글 잘 쓸 수 있어”를 주제로160명의 캠퍼분들 앞에서30분간 이야기를 나눴습니다. 해당 포스팅에서는 기술공유에서 다뤘던 내용을글로 여러분과 함께 공유하고자 합니다. 기술공유 당일 날 모습입니다! 이때 했던 것처럼여러분에게도 생생하게 들려드리겠습니다 😊 바로 시작해보시죠! 📍 본격적으로 시작하기에 앞서개발자 여러분! 글쓰기 막막할 때가 많으셨죠? 이 글 하나로 뻥 뚫어드리겠습니다! 끝까지 믿고 따라와주시면 감사하겠습니다. 크게 다섯 가지 내용을 다뤄보려 합니다!필요성: 우리는 왜 글을 써야 할까?본질: 글쓰기에서 가장 중요..
-
JWT를 직접 구현하면서 토큰 인증 방식에 대해 알아보자! 안녕하세요!NewCodes입니다! 이번에는 JWT에 대해 다뤄보겠습니다! JWT는 토큰 인증 방식 중에 하나인데요. 이 글을 읽으시기 전에사전 지식으로 다음 글을 추천드려요! 인증과, 인가 더 이상 헷갈리지 말자세션 인증 방식, 이 글 하나로 끝내자! 인증과 인가, 세션에 대해 잘 알고 계시다면이번 글도 수월하게 읽으실 수 있을 거예요~ 최대한 이해를 돕기 위해 직접 만든 그림도 있답니다~ 😁 그러면 바로 시작해볼게요! 🪙 '토큰'이 뭐지?우선 토큰이 뭘 의미하는 걸까요? 지하철 탈 때 이러한 토큰 보신 적 있나요? (요새는 거의 카드를 쓰긴 하죠 ㅎㅎ) 이 토큰을 통해 우리는 지하철을 탈 권리가 있음을 증명할 수 있습니다. 이외에도 토큰이라는 단어는 정말 여러 가지 맥락에서 쓰일 수 있습..
-
세션(session) 인증 방식, 이 글 하나로 끝내자! 안녕하세요!NewCodes입니다! 세션 기반 인증이 글 하나로 끝내겠습니다!! 사전 지식으로 아래 글을 통해인증과 인가가 무엇인지 알고 오시면 좋습니다!인증과 인가, 더 이상 헷갈리지 말자! 읽으면서 바로 이해가 안 되는 부분이 있을 수도 있어요! 아직 잘 몰라도 괜찮아요!처음에는 세션을 배우는 게 어렵답니다 ㅠㅠ 그래도 우선은 흐름따라 쭉 내려가면서 읽어보시는 걸 추천드려요! 이 글은 세션에 대해서만 다루고, 다음 글에서는 JWT에 대해 다룰 예정입니다! 지금 시작합니다! 🧐 세션과 JWT, 이런 거 왜 필요해? 세션과 JWT를 본격적으로 다루기 전에, 이게 왜 필요한 지 그 배경을 알아봅시다!HTTP를 잘 들여다보면 세션이 왜 필요한지 알 수 있는데요! 웹에서는 기본적으로 HTTP를 통..
인기 글
-
A* 알고리즘이 도대체 뭔데?? (with java) 🖥️ A* 알고리즘의 동작 과정과 특징 with java A* 알고리즘은 주로 게임에서 길을 찾는 데 활용됩니다!! A* 알고리즘이란 '출발 노드에서 목표 노드까지의 최단 거리를 구하는 알고리즘'을 의미합니다. '에이스타 알고리즘'이라고도 합니다. 이는 다익스트라 알고리즘에 기반을 두고 있습니다. 따라서, A*에 대해 본격적으로 알아보기 전에 다익스트라에 대한 기본적인 부분을 간략하게 짚어보겠습니다. ✅ 다익스트라 알고리즘에 대해 먼저 알아보자! 다익스트림 알고리즘이란 '출발 노드에서 다른 모든 노드까지의 최단 거리를 각각 구하는 알고리즘'을 의미합니다. 동작 과정동작과정을 간단히 추상화하자면 다음과 같습니다. 준비: 출발지와 최단 거리 테이블을 초기화합니다. 선택: 방문하지 않은 장소 ..
-
AI 시대에서 개발자로서 살아남기 위한 고찰 (feat. 문제해결력) 안녕하세요! NewCodes입니다! 요새 AI의 발전이 너무 빠르다. 요새는 바이브 코딩이라는 새로운 패러다임이 생기기도 했다.이젠 자연어로도 코딩할 수 있는 시대이다. 솔직히 프로그래밍을 공부하고 있는 나의 입장으로서는이러한 발전이 신기하면서도, 마음이 살짝은 불편하다. 이렇게 AI가 잘하면 내가 지금 공부하는 게 의미가 있을까?미래에 대체될지도 모르는 직업에 괜히 시간을 쏟는 게 아닐까?하는 생각이 스멀스멀 올라오곤 한다. 그럴 때마다 저만의 합리화(?)로 이 생각을 누르곤 했다. 이제는 조금 더 확실하게 누르려고 이 글을 써본다. AI 시대의 개발자는 어떤 모습이어야 하는지,어떻게 살아남을 수 있는지를 정리해보고자 한다. 이 글을 쓰기 위해 한 달 전부터조금씩 자주 AI에 대한 생각을 정리하..
-
토스페이먼츠 3년 이하 서버 개발자 챌린지 - 서류 및 코딩테스트 합격 회고 안녕하세요! NewCodes입니다!! 지난 4월,'토스페이먼츠 3년 이하 서버 개발자 챌린지' 전형에 지원했었습니다! 이번 포스팅에서는코딩테스트를 보고 나서 느낀 점과 약간의 팁, 그리고 제 자신의 피드백에 대해 담아보겠습니다!! 📌 토스 코딩테스트 참고사항응시 언어: 딱히 언어 제약 x (본인은 자바 선택)문제 수: 알고리즘 6문제 + 서술형 3문제시간: 90분 (오후 2시 ~ 오후 3시 30분)감독: 화면 공유 (화상 감독 x)환경: 프로그래머스제약 조건인터넷 검색 가능외부 IDE 사용 가능 💻 알고리즘 문제에 대하여 난이도는 그렇게 어렵지 않았습니다. 제 체감상 대부분 백준 실버에 해당하는 문제였던 것 같습니다. 유형은 주로 '구현'이었습니다. 특정 알고리즘을 알아야만 풀 수 있는 문제는 ..
-
Artillery를 통한 Socket.io 게임 서버 부하테스트 경험기(feat. TIP) 안녕하세요! NewCodes입니다! 이번에는 Node.js + Socket.io 게임 서버를부하테스트했던 경험에 대해서 적어보려 합니다! Socket.io 부하테스트 관련 레퍼런스가 많이 없어시행착오를 많이 겪었습니다. 그래서 해당 경험을 정리하며,비슷한 상황에 있는 분께 도움이 됐으면 해서TIP까지 정리해보고자 합니다. 이 글은 처음부터 순서대로 읽는 걸 추천드리며,TIP은 마지막에 정리되어 있습니다. 📍 부하테스트를 하고자 했던 이유부하테스트를 하고자 했던 이유는 간단합니다. 팀의 목표 때문이었습니다. 한 게임방 내 200명의 플레이어가 원활히 플레이할 수 있게 구현 그런데 왜 200명일까요? 저희의 서비스가 사용되길 기대하는 상황은 위와 같았습니다. 대규모의 인원이 한 장소에서 즐겁..
-
[네부캠] 네이버 부스트캠프 9기 - 1차 코딩테스트 회고 안녕하세요! NewCodes입니다! 이번 네이버 부스트캠프 9기에 지원했습니다! 자기소개서와 포트폴리오를 열심히 작성하고~~1차 코딩테스트를 봤습니다! 2024년 6월 15일에 진행한네이버 부스트캠프 1차 코딩테스트(문제 해결력 테스트)회고를 해보겠습니다! 📌 네이버 부스트캠프 1차 코딩테스트 참고사항응시 언어: 자바 (언어 제약 크게 x)문제 수: 10문제 (CS 6문제 + 구현 3문제 + 서술형 1문제)시간: 2시간 (14:00 ~ 16:00)감독: 무감독환경: 구름제약 조건인터넷 검색 가능, 개인 자료 참고 불가능A4 종이 3장 및 필기펜 가능시험 페이지 및 검색 페이지 외 모든 프로그램 종료투명한 생수 가능 👨🏻💻 1차 코딩테스트에 대하여 : 난이도는 전반적으로 쉬웠습니다. 물론 ..
최신 글
-
DAN25 네이버 컨퍼런스 DAY2 솔직 후기 안녕하세요! NewCodes입니다. DAN 25 네이버 컨퍼런스 DAY2 후기를 남겨보려 해요. 2025.11.07(금) 코엑스에 다녀왔습니다! 네이버 부스트캠프 웹모바일 수료생에게티켓을 나눠주셔서 다녀올 수 있었어요. 덕분에 정말 좋은 경험 하고 왔습니다!! 함께 살펴보시죠! DAN25 둘러보기!처음에 입장하면 큰 배너가 반겨줍니다. 연결의 진화, 경험의 확장 플랫폼으로서의 역할을 지속하되 새로운 도전을 계속해서 한다는 문구 같네요! DAN25에서 이 문구가 어울리는 건 '네이버지도'가 있었어요. 이번에 리브랜딩을 하면서 새로운 기능들을 많이 추가했더군요. 가장 인상 깊었던 건 AR 기술을 통해서 실내에서도 길을 찾을 수 있다는 점이에요. 코엑스와 같이 넓은 실내 공간일 경우 길을 찾기 ..
-
Java로 알아보는 TCP Socket Programming 요약: Java를 통해 TCP Socket Programming을 점진적으로 구현하며 학습하는 글이다. 소켓 통신, 멀티 스레드의 활용, I/O Multiplexing, Reactor Pattern 등을 다룬다. 이를 통해 두 컴퓨터가 애플리케이션 수준에서 통신을 위해 어떤 과정을 거치는지 이해하고, 효율적인 I/O를 하는 방법을 고민할 수 있다. 네트워크에서 Socket Programming은 빠질 수 없다. Socket Programming을 본격적으로 하기 전에 기본 개념에 대해서 알아보자. 📍 개요Socket, IP 주소, PortSocket이란 두 컴퓨터가 통신하는 데 필요한 양 끝단의 통신 인터페이스이다. 이 Socket에는 두 가지 정보가 필수적으로 포함되어야 한다. IP 주소와 P..
-
Index는 왜 빠를까? 백엔드 개발자라면 Index가 DB 조회 성능에 좋다는 건 익히 들어봤을 것이다. 이 글을 통해 왜 빠른지, 내부 구조는 어떻게 되어있는지 살펴보자. 🚀 Index의 효과index를 직접 써보며 그 효과부터 체감해보자. 준비실험 환경은 다음과 같다.하드웨어: Github Codespace (CPU 2개, RAM 8GB)데이터베이스: MySQL 8.0.42데이터: 부동산 테이블과 100만개의 레코드 아래와 같은 부동산 테이블을 준비했다. CREATE TABLE real_estate_transaction ( id BIGINT AUTO_INCREMENT PRIMARY KEY, -- 거래 데이터 ID transaction_type VARCHAR(20) NOT NULL, ..
-
2025년 2분기 회고 자대 배치를 받은 이후, 군대에서의 생활에 대해 회고해보려 한다. 잘했던 것군대 안에서도 꾸준히 코딩 공부한 점 잘했다. 주변에서 쉬고 있어도, 나는 나만의 길을 간 것에 칭찬한다. 개인 프로젝트 진도 좀 나갔다.MVP는 배포된 상태이고, 이제 조금만 더 가다듬으면 될 것 같다. 글쓰기 스터디 2달째 하고 있는 점 잘했다. 덕분에 CS 지식에 디테일이 더해지고 있다. 앞으로도 지속해서 하고 싶다. 운동 꾸준히 한 점 너무 좋다. 운동능력 회복한 뿐만 아니라 상승시켰다. 군것질 줄인 점 굿!!! 아쉬웠던 것군 업무에서 실수가 좀 있었던 점 실수를 줄이기 위해서 도메인도 많이 관심을 가지려 노력해야겠다. 항상 리첵하는 습관을 지녀야겠다. 사소한 일에 일희일비했던 것 같다.기분이 오락가락 했던 적이 종종 있었.. -
트랜잭션 제대로 알고 계신가요? 면접을 대비하거나, CS를 공부할 때 트랜잭션을 한 번쯤 접했을 것이다. 트랜잭션에 대해 피상적으로만 학습하고 넘어가는 경우가 많을 거라 생각한다. 이 글을 통해서 트랜잭션에 대해 더욱 깊게 이해했으면 한다. 이 글은 최대한 신뢰할 수 있는 내용으로 전달하려 노력했다.또, 직접 그린 그림으로 이해하기 쉽게 전달하려 했다. 이제 본격적으로 시작해보자! 📍 개요트랜잭션을 정립한 사람 트랜잭션은 여러 개발자들로부터 자연스럽게 발전한 개념이다. 이를 이론적으로 정립한 건 미국의 컴퓨터 과학자인 Jim Gray이다. 1992년에 『Transaction Processing: Concepts and Techniques』이라는 책을 출판했다. Jim Gray는 트랜잭션을 포함하여 데이터베이스에 기여한 공로..
-
[Java] synchronized로 동시성 이슈 해결하는 원리 안녕하세요! NewCodes입니다! 최근에 Spring&Java로 과제테스트를 봤었다. 이때 동시성 이슈와 관련한 요구사항이 있었다. 하지만 평소에 동시성 이슈 해결에 관해서 Atomic한 접근 방법만 써봤었다.그래서인지 다양한 동시성 문제 해결 방법 중 해당 과제에서 적합한 방법을 잘 녹여내지 못했다. 이번을 계기로 Java에서 동시성 이슈를 해결하는 방법들이 어떤 게 있는지 알아보려한다!우선 첫 번째로 synchronized 키워드에 대해서 자세히 알아보자! 📍 용어 정리관련 용어부터 확실히 하고 들어가자! 동시성 (concurrency)하나의 시스템에서 여러 작업이 동시에 실행되는 것처럼 보이게 하는 개념주로 멀티스레드를 통해 동시성 높은 처리를 함동시성 이슈이러한 동시성으로 인해 생기는..
-
AI 시대에서 개발자로서 살아남기 위한 고찰 (feat. 문제해결력) 안녕하세요! NewCodes입니다! 요새 AI의 발전이 너무 빠르다. 요새는 바이브 코딩이라는 새로운 패러다임이 생기기도 했다.이젠 자연어로도 코딩할 수 있는 시대이다. 솔직히 프로그래밍을 공부하고 있는 나의 입장으로서는이러한 발전이 신기하면서도, 마음이 살짝은 불편하다. 이렇게 AI가 잘하면 내가 지금 공부하는 게 의미가 있을까?미래에 대체될지도 모르는 직업에 괜히 시간을 쏟는 게 아닐까?하는 생각이 스멀스멀 올라오곤 한다. 그럴 때마다 저만의 합리화(?)로 이 생각을 누르곤 했다. 이제는 조금 더 확실하게 누르려고 이 글을 써본다. AI 시대의 개발자는 어떤 모습이어야 하는지,어떻게 살아남을 수 있는지를 정리해보고자 한다. 이 글을 쓰기 위해 한 달 전부터조금씩 자주 AI에 대한 생각을 정리하..
-
동기 비동기 블로킹 논블로킹, 이 글 하나로 끝내자! 안녕하세요! NewCodes입니다! 프로그래밍을 배우다보면 꼭 마주치는 개념이 있죠! 바로 동기 / 비동기 / 블로킹 / 논블로킹입니다. 처음 접하면 너무 헷갈리고 어렵지만,이 글 하나로 명확하게 정리해드릴게요! 🔥 이를 잘 알아야컴퓨터 자원을 효율적으로 사용할 수 있고, 빠른 성능의 프로그램을 만들 수 있습니다. 읽고 나면Node.js, Spring Webflux, Redis, NginX등과 같은 기술을 더욱 잘 이해할 수 있게 되실 겁니다! 또, 효율적인 코드를 작성하는 데 도움이 되실 겁니다! 🎯 동기, 비동기, 블로킹, 논블로킹의 차이점'동기 비동기 블로킹 논블로킹' 해당 개념은 운영체제에서 비롯된 개념입니다. 느린 I/O를 어떻게 하면 최적화할 수 있을까를 고민한 결과의 산물입니다...
-
Node.js에서 readFileSync를 쓰면 안 되는 이유 (feat. Event Loop) 안녕하세요! NewCodes입니다! Node.js에서`readFileSync`를 써보신 적이 있으신가요? `readFileSync`는 특별한 경우를 제외하고써서는 안 되는 함수입니다. `readFileSync`를 쓰면주방에 있는 셰프가 멈추는 것과도 같습니다. 그러면 주방이 돌아가질 않고, 음식이 늦게 나오겠죠? Node.js에서도 마찬가지입니다. 여러분이 웹 애플리케이션 서버를 만들고 있는데`readFileSync`를 썼다면성능이 매우 떨어질 것입니다. 특히, 사용자가 동시적으로 몰린다면요! 이 글의 주요 목적은 단순히'readFileSync를 쓰면 안 된다.'에서 끝나진 않습니다. 소중한 main thread가 block되지 않게 하자! 를 전달하는 게 주요 목적입니다!! 우선 ..
-
공군 훈련소 + 운항관제 특기학교 회고 안녕하세요! NewCodes입니다. 올해 3월 10일,공군 866기로 입대했습니다. 5주 간의 훈련소와 1주 3일의 특기학교를 거쳐지금은 자대 배치를 받았습니다. 다행히도 본가에서 15분 거리인자대로 배치받아서 행복하게 생활중입니다 ㅎㅎ 특기는 운항관제 CQ로서복무하고 있습니다. 비행대대 소속으로조종사들과 한 공간에서 근무하고 있습니다. 하는 일은 주로 비행스케줄을 관리하고 C4I 체계에 필요한 정보들을 입력하는 일입니다. 관련 부서와도 소통이 잦은 편이며,작성한 비행스케줄을 각종 부서에 전달합니다. 각설하고 이번에도 역시 회고를 해보려 합니다.생각보다 성장하거나 얻은 부분들이 많아서요! 시작해보겠습니다!! 🙏 군대에서 겸손을 배운 썰절실하게 깨달은 점은 '겸손'이었다. 군대에서 ..
-
미생을 보고나서 절실히 느낀 점 최근 미생 20회를 전부 봤다. 너무 재미있어서 하루에 2편씩은 챙겨봤다. 미생에는 심금을 울리는 대사, 스토리가 많았다. 다 보고나서 깨달은 점, 느낀 점 등을 정리해보고자 한다. 이렇게 굳이 따로 정리하는 이유는 나에게 큰 동기부여와 용기를 불어넣어 줬기 때문이다. 나는 드라마나 영화를 보고 자극을 많이 받는 편이다. 짧게는 하루, 길게는 한 달 정도 여운을 가지며 주인공처럼 살아가곤 한다. 이번에는 그 여운을 더 길게 남기고 싶어 이렇게 글로 쓴다. 1. 작은 일을 성실히 다하자. 주인공 장그래는 인턴으로서 할 수 있는 일이라면 어떤 것이든 최선을 다해서 했다. 물론 처음엔 무시당했지만, 계속해서 노력하며 결과를 보이는 모습에 주변 인물들의 태도는 점점 호의적으로 달라졌다. 이유는 작은 일들을..
-
그렙(프로그래머스) 백엔드 개발자 코딩 테스트 후기 안녕하세요! NewCodes입니다! 이번 포스팅에서는2025년 2월'그렙' 코딩테스트회고를 해보겠습니다! 📌 그렙 코딩테스트 참고사항응시 언어: JavaJava, C, Python 등의 언어가 가능했음문제 수: 5문제 (코딩 3문제 + SQL 2문제)시간: 2시간감독: 화면 공유 + 모니토앱 공유환경: 프로그래머스 플랫폼 제약 조건인터넷 검색 불가능원하는 시간대에 선택하여 응시 가능 📍 각 문제에 대해코딩 (1번, 2번, 3번)결론적으로 코딩 문제는 모두 어렵지 않게 구현 위주로 나왔습니다. 특정 알고리즘을 요구하는 문제는 절대 아니었습니다. 결과적으로 코드를 보면 이중 for문과 if문만으로도 적절히 조합하여 쓰면 풀 수 있었습니다. 문제 스타일은 요구사항은 길지만, 구현하기엔 어렵지 않은 스타..
-
사용자 피드백을 바탕으로 타이머 팝업 구현하기 안녕하세요! NewCodes입니다! 발단사용자에게 피드백을 받고 추가 기능을 구현한 경험을 남겨보고자 한다. 해당 프로젝트는 MapleStorage이다. 내가 코딩을 처음 배울 때 만들었던 웹이다. html, css, js만을 사용하여 외부 라이브러리 도움 없이 만들었었다. github pages를 통해 배포했고, 메이플 커뮤니티에 올려 유저를 모아 반응을 얻기도 했다. 해당 웹의 주요 기능은 아래와 같다. 메이플 마을 브금 들려주기 To do list 작성하기사냥 시 재획에 필요한 타이머 작동이게 바로 2년 전 일이다! 어느 날, 한 사용자로부터 메일이 왔다. 타이머 작동에 관해 추가 구현을 해달라는 것이었다. 아직도 내 웹을 사용하고 있다는 사람이 있으며 메일까지 주는 사람이 있다는 것에 ..
-
팀에서 개발자로서 잘 협업하는 방법 안녕하세요! NewCodes입니다! 최근에 그룹 프로젝트에서협업을 하며 생긴 습관과 TIP에 대해 총정리해보고자 합니다. 이를 바탕으로 더 나은 협업을 위한 발판으로 삼아보겠습니다! 🎯 이 글을 통해 얻어갈 수 있는 것개발 작업할 때 사소하지만 꼭 필요한 태도와 TIP코드리뷰를 유익하게 잘 주고받는 방법팀에 조금이라도 더 기여하는 방법 📝 작업을 본격적으로 시작하기 전 1) 요구사항을 꼼꼼히 읽으며 파악하자. : 요구사항을 파악하는 건 기본 중에 기본이다. 요구사항이 이해가 되더라도 한 두 번은 더 읽어봐야 한다. 굳이 이렇게 해야 하는 이유는 요구사항을 오인했을 때 나중에 수정하는 비용이 다소 크기 때문이다. 작업 초반에 일어난 실수일수록 후반에 잡기가 힘들어진다. 또, 요구사항은 대부분 명확..
-
1초에 80,000번 Network I/O를 하면 생기는 병목을 분석해보자! 안녕하세요! NewCodes입니다! 저번 글에서 실시간 퀴즈 게임 프로젝트에 대해부하테스트와 성능최적화 글을 다루었습니다. Artillery를 통한 Socket.io 게임 서버 부하테스트 경험기실시간 게임 서버 성능 최적화 - 한 게임방에서 200명이 플레이?! 이번 글에서는 Network I/O가 어떻게 일어나는지고수준에서 저수준으로 깊게 파보려 합니다. 이번에는 병목의 원인으로 잡혔던 Network I/O에서 저수준에서 어떤 부분이 원인이었을지를 탐구해보겠습니다. 이를 통해 다음에 트래픽이 상승하여 서버에 부하가 생겼을 때,개선 방향은 무엇이 있을지 고민해보려 합니다. 이 글에서 다루고자 하는 내용Network I/O가 Node.js에서부터 시작해서 OS까지 이루어지는 과정 분석하기 I/O는 ..
-
실시간 게임 서버 성능 최적화 - 한 게임방에서 200명이 플레이?! 안녕하세요! NewCodes입니다! 실시간 퀴즈 게임 플랫폼 프로젝트에서성능 최적화한 경험을 공유하고자 합니다! 부하테스트를 통해 메트릭을 수집했고, 병목의 원인을 분석했습니다. 그리고 최적화한 방법까지자세하게 남겨보고자 합니다! 📍 한 게임방에 200명을 지원하고자 한 이유 한 게임방에 200명을 지원하고자 한 이유는..! 팀의 목표였기 때문입니다!한 게임방 내 200명의 플레이어가 원활히 플레이할 수 있게 구현 그런데 왜 200명일까요? 저희의 서비스가 사용되길 기대하는 상황은 위와 같았습니다. 대규모의 인원이 한 장소에서 즐겁게 아이스브레이킹, 레크리에이션 등의 용도로 사용되길 원했습니다. 그러면 지루할 수도 있는 강연이나 회의장에서도 즐거움을 더해줄 수 있으니까요! 그리고 네이버 부스트캠프 ..
-
Artillery를 통한 Socket.io 게임 서버 부하테스트 경험기(feat. TIP) 안녕하세요! NewCodes입니다! 이번에는 Node.js + Socket.io 게임 서버를부하테스트했던 경험에 대해서 적어보려 합니다! Socket.io 부하테스트 관련 레퍼런스가 많이 없어시행착오를 많이 겪었습니다. 그래서 해당 경험을 정리하며,비슷한 상황에 있는 분께 도움이 됐으면 해서TIP까지 정리해보고자 합니다. 이 글은 처음부터 순서대로 읽는 걸 추천드리며,TIP은 마지막에 정리되어 있습니다. 📍 부하테스트를 하고자 했던 이유부하테스트를 하고자 했던 이유는 간단합니다. 팀의 목표 때문이었습니다. 한 게임방 내 200명의 플레이어가 원활히 플레이할 수 있게 구현 그런데 왜 200명일까요? 저희의 서비스가 사용되길 기대하는 상황은 위와 같았습니다. 대규모의 인원이 한 장소에서 즐겁..
-
글쓰기, 개발자가 꼭 배워야 할 기술 (+실전 TIP) 안녕하세요, 부스트캠프 웹・모바일 9기Web 캠퍼 김상혁입니다. 멤버십에서는 매주 월요일 캠퍼끼리‘기술공유’ 시간을 가집니다. 이번에는 제가 기술공유에 신청했었습니다! “야 너도 글 잘 쓸 수 있어”를 주제로160명의 캠퍼분들 앞에서30분간 이야기를 나눴습니다. 해당 포스팅에서는 기술공유에서 다뤘던 내용을글로 여러분과 함께 공유하고자 합니다. 기술공유 당일 날 모습입니다! 이때 했던 것처럼여러분에게도 생생하게 들려드리겠습니다 😊 바로 시작해보시죠! 📍 본격적으로 시작하기에 앞서개발자 여러분! 글쓰기 막막할 때가 많으셨죠? 이 글 하나로 뻥 뚫어드리겠습니다! 끝까지 믿고 따라와주시면 감사하겠습니다. 크게 다섯 가지 내용을 다뤄보려 합니다!필요성: 우리는 왜 글을 써야 할까?본질: 글쓰기에서 가장 중요..
-
Ncloud 후기 - '실시간 퀴즈 게임 플랫폼' 개발 안녕하세요! NewCodes입니다! Ncloud 사용 후기를 남겨보겠습니다! 개발한 프로젝트가 어떤 서비스인지부터 설명드리겠습니다! ✍🏻 '퀴즈그라운드' 서비스 소개QuizGround는 실시간 퀴즈 게임 플랫폼입니다!귀여운 이모지 캐릭터로 변신하여 퀴즈를 풀 수 있어요!한 게임방에서 최대 200명까지 플레이할 수 있어요! 🚀 핵심 기능생존 모드 또는 랭킹 모드 중 선택하여 플레이할 수 있습니다.[생존 모드] 퀴즈를 맞춰 끝까지 살아남아보세요![랭킹 모드] 퀴즈를 맞춰 점수를 모아보세요! 실시간 채팅과 실시간 이동으로 다른 사용자들과 상호작용할 수 있습니다.실시간 채팅실시간 이동 위 모든 기능이 200명이 있는 게임방에서도 가능해요! 사용한 기술 스택 프로젝트 링크 깃허브: https://gith..
-
[네부캠] 네이버 부스트캠프 웹・모바일 9기 - 멤버십 최종 회고 안녕하세요! NewCodes입니다! 네이버 부스트캠프 멤버십최종 회고를 해보겠습니다! 바로 시작하겠습니다! 🤗 처음인 게 많았지만 잘 해냈다.나는 2023년 11월부터 개발자의 길을 걷기 시작했다. 위 잔디에서도 보이듯이 2023년 초에 처음 입문을 했었다. 생활코딩 강의를 듣고 간단한 칼로리 계산 웹을 하나 만들어본 정도였다. 이후에는 개발이 아닌 다른 일을 잠시 했었다. 그러고 11월에 본격적으로 하기 시작했다! 2023년 말, 나는 다음 해에 교대 4학년이 될 예정이었다. 임용고시를 볼지 아니면 다른 길을 갈지 선택해야했다. 나는 이때 개발자의 길을 선택했다! 차마 부모님께는 말씀을 못 드렸고 네이버 부스트캠프 멤버십에 들어오고 나서야 말씀을 드렸었다. 부모님을 설득하기 위해 ppt 70..
반응형