서버는 왜 죽는가? - Nginx 로드밸런싱
·
개발/CS
지금까지 프로젝트를 진행하면서 단일 Spring 서버로 서비스를 운영했다.기능적으로는 문제 없이 돌아갔다. 포트폴리오에 쓸 서비스가 EC2 프리티어를 감당하지 못할 정도의 트래픽이 쏠리지 않았었기 때문이다.실제 앱스토어에 런칭한 경우에도 간단한 insert와 delete만 포함되어 있어 서버를 스케일링업 해야하는 상황을 겪지 못했었다. 하지만 이번 프로젝트 기획 상 트래픽이 많이 들어올 수 있을 거라 기대했다.비용을 많이 들이지 않는 한에서 대비를 해보자는 생각에 서버에 트래픽이 몰렸을 때의 문제점과 해결방안을 공부해봤다. 우리 팀이 왜 단일 서버 다중 인스턴스 로드밸런싱을 진행하게 되었는지 설명하겠다. 문제 상황 : 트래픽 多트래픽이 많아지면 무슨일이 생길까?1. 요청이 느려짐2. 일부 요청이 지연됨3..
그래서 분산이 뭔데
·
개발/CS
팀원과 소통 중 '분산'이란 단어가 참 골치아팠다.다들 '분산'이라고 말하는 데 설명하는 바가 전혀 달랐기 때문이다. "DB를 나누는 게 분산 아니야?""로드밸런싱으로 트래픽을 나눠 처리하면 분산 아니야?" 이렇게 대화를 시작하니 끝이 없었다.오해를 방지하기 위해 분산이라 말할 수 있는 게 무엇이며 어떤 종류가 있는지 알아보자. 분산의 본질분산이란 여러 개의 독립된 노드가 협력하여 하나의 작업 또는 서비스를 수행하는 것이다.노드는 프로세스일 수도 있고 서버, 머신이어도 된다.핵심은 물리적으로 나뉘어 있으며, 네트워크로 통신하여 하나처럼 보이게 동작해야한다는 점이다. 왜 이렇게 헷갈리는가?우선 '분산 시스템'과 '분산 처리'를 분리할 필요가 있다.분산 시스템은 여러 노드가 협력하여 서비스를 제공하는 구조이..
채팅 기능 구현을 위한 WebSocket + STOMP 구조 정리
·
개발/CS
안녕하세요. 노흐입니다.지난 한달동안 야구 관람·경험 플랫폼 팀프로젝트를 진행했습니다. 프로젝트 회고 (미작성)https://snack.tistory.com/38 해당 프로젝트에서 채팅 기능을 맡아 Spring + STOMP 기반 WebSocket 구조로 구현했습니다.하지만 프론트단에서 '작동이 안 된다'라는 피드백이 여러번 들어왔고,그 원인을 설명하는 데에 예상보다 많은 시간을 소모했습니다. 돌이켜보면 원인은 기술 자체보다 다음 세 가지 였습니다.WebSocket의 동작 원리를 정확히 이해하지 못한 점/ws, /app, /topic에 대한 설명 문서 부족모바일(flutter) 환경에서 발생할 수 있는 문제에 대한 대비 부족재발을 막기 위해 WebSocket과 STOMP 구조를 정리해보고자 합니다. 1..
시스템 아키텍처 설계와 기술 선택의 이유에 대하여
·
개발/TIL
왜 '진짜' 아키텍처를 그려야 할까?많은 취준생의 포트폴리오를 살펴보면, 사용한 로고들을 모아놓은 '기술 나열형' 아키텍처가 80% 이상이라고 합니다.하지만 이런 아키텍처 다이어그램은 실제 개발 현장에서 아무것도 표현하지 못한 다는 것을 현직 개발자 분에게 피드백 받고 부끄러웠습니다. 저 또한 예외는 아니었기 때문입니다.진짜 아키텍처의 핵심은 "어떤 기술을 썼는가"가 아니라, "각 요소가 어떻게 연결되어 있고, 데이터가 어떤 규약으로 통신하는가"를 보여주는 것이라고 합니다.하지만 시스템 아키텍처를 FM적으로 그려보려고 추가학습을 하려면 배보다 배꼽이 크다는 판단 하에 프로젝트를 일정 수준까지는 설명할 수 있는 가장 필요한 부분들을 포함해보기로 했습니다.이번 프로젝트에서는 단순한 나열을 넘어, 요소 간의 ..
기획이란 무엇인가
·
개발/TIL
오늘은 최근 알게된 기획에 대한 내용을 정리해 보고자 합니다. 저는 평소 아이디어를 내는 걸 좋하는데요.하지만 대부분 단순히 이런 서비스가 있으면 좋겠다는 아이디어 수준에서 그치고 맙니다.그렇다면 이것을 기획이라고 부를 수 있을까요? 결론부터 말하자면, 아이디어 그 자체로 기획이 되는 건 아닙니다.또한 프로젝트 명세서를 작성하는 것만으로 기획의 전부라 하기도 어렵지요. 기획은 단순히 문서를 만드는 일이 아니라,아이디어를 현실에서 실행 가능한 형태로 바꾸는 과정에 가깝습니다. 일반 적으로 서비스는 다음과 같은 흐름을 거쳐 만들어집니다.아이디어 → 세부 기획(구체화) → 설계 → 개발 이 과정에서 기획의 핵심은 '세부 기획', 즉 구체화에 있습니다.어떤 기능을 만들 것인지보다, 그 기능이 왜 필요한지..
사람을 알고 싶다
·
공지사항
많은 사람을 알고 싶다. 그게 제 좌우명입니다. 사람이 평생을 사는 세상이란 생각보다 작고 좁아서혼자만의 시야로는 언제나 일부분만 보게 된다고 생각합니다. 그래서 사람과 많이 부대끼고 대화하고그렇게 관계를 만들어가는 사람이 되고 싶습니다. 그리고 그런 일을 자연스럽게 해낼 수 있는 사람이 되고 싶습니다. 개발 이야기도, 일상의 생각도,때로는 취미와 고민도 이곳에 남기려 합니다. 사람냄새 나는 사람이 되기 위해 오늘도 사람을 찾아 나서렵니다. 반갑습니다.
[BOJ/Java] 15894_수학은체육과목입니다 / 브론즈 3
·
코딩테스트/백준
문제 주소https://www.acmicpc.net/problem/15894 문제 이해- 한 변의 길이가 1인 정사각형을 아래 그림과 같이 겹치지 않게 빈틈없이 계속 붙여 나간다. - 가장 아랫부분의 정사각형이 n개가 되었을 때, 실선으로 이루어진 도형의 둘레의 길이를 구하시오. 문제 규칙- 1 : 4 - 3 : 12- 규칙성 발견. 곱하기 4하면 된다. 문제 발생- 제출 후 fail 발생 - n의 개수가 10^9까지임. - 그럼 답이 10^9 * 4까지 수용가능해야함.- long을 사용하자import java.util.Scanner;public class _Main_15894_수학은체육과목입니다 { public static void main(String[] args) { Scanner sc = ne..
2.0-2.1
·
인터넷강의/JavaScript
2.0 console.log() nicoInfo.name console도 Object다. .log는 key다. 우리가 사용하는 컴퓨터 소프트웨어에 console이라는 object와 log라는 key가 있는 것이다. log는 function(함수)이자 object다. console.log(console) 내장함수(built-in function) console.log(); =>console object 안에 있는 log라는 함수 //외부에 있는 데이터를 읽는 함수를 만드는 법 function sayHello(potato){ console.log('Hello!', potato); } //함수를 호출하는 법 sayHello("Nicolas"); Hello! Nicolas 함수(function) sayHello..