목록분류 전체보기 (178)
한 걸음씩 기록하며
프로그래머스에 SQL 테스트가 있길래 심심해서 쭉 한번 풀어봤는데, 거기서 몰랐던 부분이 있는 문제가 있어서 남겨봅니다. [입양 시각 구하기 (2)] 👉🏻 답안 SET @HOUR= -1; SELECT (@HOUR := @HOUR +1) AS HOUR, (SELECT COUNT(*) FROM ANIMAL_OUTS WHERE HOUR(DATETIME) = @HOUR) AS COUNT FROM ANIMAL_OUTS WHERE @HOUR < 23 📑 설명 SET 어떤 특정한 값을 할당할 떄 쓰는 명령어 @가 붙은 변수는 프로시저가 종료되어도 유지된다. 이를 통해 값을 누적하여 0부터 23까지 표현 가능 := 은 비교 연산자 =과 혼동을 피하기 위한 대입 연산 SELECT(@HOUR := @HOUR+1)은 @HO..
1. MSA 등장 배경 및 Monolithic 1) MSA 등장 배경 80년대 초, 큰 규모의 시스템을 설계할 때 직면할 수 있는 공통 문제를 해결하기 위해서 아키텍쳐나 패턴의 필요성이 대두되었다. 가장 처음 등장한 용어는 Software Architecture였고, 그 후로 Monolithic Architecture, SOA, MSA 등 아키텍처 용어들이 탄생하게된다. Software Architecture : 소프트웨어 요소와 이들 요소의 외부 속성 그리고 이들 사이의 관계를 구성하는 시스템의 구조 서비스 지향 아키텍처(Service Oriented Architecture): 대규모 컴퓨터 시스템을 구축할 때의 개념으로 업무상 일 처리에 해당하는 소프트웨어 기능을 서비스로 판단하여 그 서비스를 네트워..
1. Node.js 싱글 스레드? 논 블로킹? : async/await의 함정 1) Node.js는 사실 싱글 스레드 방식으로 일하지 않는다. 모두 잘 알듯이, Node.js는 싱글 스레드, 비동기식 이벤트 기반, 논 블로킹 I/O 라는 특징을 가지고 있다. 싱글 스레드임에도 Node.js가 빠르게 작업을 처리할 수 있는 이유는, 바로 논 블로킹 I/O이기 때문이다. 논 블로킹이란 이전 작업이 완료될 때까지 기다리지 않고 다음 작업을 수행하는 것을 의미한다. Node.js가 작업을 처리 안하고 가버리면 그러면 누가 그 작업을 처리하는가? 백그라운드(libuv)가 한다. 비동기적으로 처리할 수 있는 이벤트를 백그라운드에서 처리해주기 때문에, Node.js가 싱글 스레드임에도 빠른 작업 속도를 낼 수 있는 ..
실전프로젝트가 게임 서비스 였기에, 서비스 특성상 예상치 못한 버그 및 에러가 속출하였다. 이에 대한 트러블 슛팅을 적어보고자 한다. 1. 문제 상황 게임 서비스를 구현하며 가장 힘들었던 것이 바로 버그 및 에러를 잡아나가는 것이었다. (왜 내가 했던 게임들이 틈만 나면 업데이트를 한다는 건지 이제 알겠다..) 게임을 개발해나가는 과정에서도 숱한 에러들로 밤을 지새웠는데, 유저 테스트를 위해 베타 서비스를 열자 버그와 에러가 이곳 저곳에서 나오기 시작했다. 사실 버그와 에러가 나오는 것보다 더 문제인 것은, 버그와 에러 상황을 재현하는데 있었다. 버그 및 에러를 잡기 위해서는 발생했던 상황을 재현하면서 잡아야하는데, 팀원들과 서버 로그를 계속해서 모니터링 하는 것도 물리적으로 불가능하고, 실제로 그렇게 ..
실전 프로젝트에서 겪은 트러블 슛팅을 소소하게 적어봅니다 1. 문제 게임 서비스 특성상 예상치 못한 에러나 버그가 많이 발생하여, 이를 보완 수정해야하는 경우가 잦음 그러나 서비스 운영 도중에는, 서비스를 이용 중인 유저로 인해 최신화된 내용을 즉시 배포하기가 어려워 유저가 없는 시간대를 기다렸다가 배포하는 비효율이 발생함 2. 해결 과정 1) 서비스 특성에 맞추어 예약 자동 배포로 결정 스케일 아웃을 하여 무중단 배포를 하는 것도 고려했으나, 정확하게 서버마다 같은 방에서 게임을 하는 사람들을 배분하는 것이 불가능하고, 포인트와 승패가 민감한 게임이라 무중단 배포가 현재 서비스에 맞지 않는 배포 방식이라 판단함 평균적으로 새벽 4시 경에는 유저가 없다는 것을 파악하여, 해당 시간대에 예약 자동 배포하여..
실전 프로젝트를 진행하며 겪었던 트러블 슛팅에 대해서 간단히 기록하려고 한다. 1. 문제 & 원인 1) 문제 발생 유저 테스트 기간 중, 약 15명의 유저가 서비스를 이용하다가 DB가 정상적으로 작동하지 않는 문제 발생 여러 유저가 계속해서 훈수 무한 채팅을 시도한 상황을 파악 훈수 채팅은 위의 시연 영상에서, 채팅을 치면 구름이 지나가는 채팅을 뜻합니다. *훈수 채팅 로직 유저가 socket으로 채팅 내용을 서버에 전달 => 서버에서 해당 ID의 훈수 채팅 cnt를 +1로 업데이트 => socket으로 해당 방의 모든 유저에게 채팅 내용을 전달 => 전달받은 채팅 내용을 화면의 효과 처리함 2) 원인 파악 유저 테스트 기간 중 훈수 채팅 서비스는 무한 채팅이 가능한 상황이었고, 여러 유저의 동시적인 무..
RDS로 MySQL 설정시, Workbench와 연결하는 것에 약간의? 어려움이 있어서 글로 남겨봅니다. 1. Workbench Connections 만들기 창 들어가기 Workbench를 켜서, 빨간 박스의 + 버튼을 누릅니다. 아래의 빨간 박스를 Standard TCP/IP over SSH로 변경합니다. 2. SSH 연결 (feat. EC2) SSH에 기입할 정보를 찾아와야합니다. SSH Hostname은 연결할 EC2 IP 주소입니다. ex) 123.123.123.123 SSH Username은 아래의 EC2의 Username 입니다. 저는 ubuntu입니다. SSH password는 신경쓰지마시고, 저희는 SSH Key를 생성해줘서 등록하려고합니다. EC2 인스턴스에서 아래의 명령어를 입력해주세..
✅ RDS 셋팅 및 EC2 연동 순서 1. 연동할 EC2 정보 파악 2. DB 보안그룹 생성 3. DB 서브넷 그룹 생성 4. 파라미터 그룹 생성 5. DB생성 6. MySQL Client 설치 7. EC2로 원격 접속 8. 파라미터 추가작업 1. 연동할 EC2 정보 파악 EC2 인스턴스 정보에서 위의 빨간색 네모 칸에 있는, VPC, 서브넷, 보안그룹은 기억해두시던지, 기록해두세요. RDS를 모두 같은 네트워크 안에서 사용해야하므로, 나중에 이 값들을 사용하게됩니다. 2. DB 보안 그룹 생성 EC2 보안그룹 생성을 눌러주세요. 보안 그룹 생성에서 1번에서 언급했던 연동하고싶은 EC2 vpc를 선택해주세요. MySQL 포트는 3306을 사용하니 인바운드 규칙에서 3306을 선택해주시고 소스는 EC2에서..