Programming/Coding

·Programming/Coding
N명 추첨개발하는 과정에서 이벤트 참가자들 중 당첨자를 추첨해야하는 상황이 발생했다. 추첨이라는 메서드는 이벤트 당 1 번만 발생하는 메서드이다. 처음에는 성능을 생각하지 않고 작성하였지만 이벤트 참여자가 1만명 이상이라면 거의 full table scan 을 통해서 1만 이상의 데이터를 가져와 계산하게 된다. 하지만 메모리 상에서 1만 이상의 데이터의 가중치를 계산하는 과정은 매우 위험하다고 생각한다.실제 Event_user 테이블 기준 Data TypeNumber of FieldsBIGINT3INT3DOUBLE4BIT(1)2DATETIME(6)2JSON1VARCHAR(255)2 대략 1 객체당 700 바이트 크기이다. 대략 150만개의 객체가 1GB 용량을 차지한다. 결국 이벤트 참가자가 많아질 수록..
·Programming/Coding
https://www.wanted.co.kr/events/pre_challenge_be_25 OOP와 SOLID를 이용한 클론코딩 | 프리온보딩 BE 챌린지 11월 | 원티드백엔드 지식을 총동원해 통합 결제 모듈을 클론 코딩해보는 강의입니다. OOP와 SOLID 이론을 설계와 구현에 적용하며, 이론을 실제 코드에 녹여내는 방법을 배웁니다. 또한, 원티드 JD 공고를 기반www.wanted.co.kr 원티드에서 진행하는 25차 프리온보딩 챌린지의 주제가 좋아보여 참가하였다. 사전 과제도 주어졌는데, 이를 배포하는 방식이 인상적이라 기록해두고자 한다.1. docker-compose.yml우선 해당 프로젝트에서는 데이터베이스를 필요로 한다. 데이터베이스를 어느 환경에서나 동일하게 실행할 수 있는 방법이 컨테이..
·Programming/Coding
사이드 프로젝트로 채팅 서버를 만들어보고 있다. 해당 서버는 STOMP 프로토콜을 사용해서 구현하고자 했는데, 이전에 쓰던 웹 앱이 안들어가지면서 STOMP 프로토콜을 테스트하기가 어려워서 직접 만들고자 하였다.  1. apic  이전 게시글을 보면 apic 라는 웹 사이트를 사용했었다. 하지만 현재(2024-10-27)는 접속이 안되어서 사용할 수가 없었다.  2. POSTMAN POSTMAN 에도 웹소켓 프로토콜을 테스트해볼 수 있다. STOMP 역시 웹소켓을 기반으로 하기 때문에 양식만 맞춰 작성한다면 테스트할 수 있다. 문제는 STOMP 프로토콜의 마지막에는 null octet 이 들어가야한다.하지만 아스키코드로 입력해보고, `^@` 를 사용해보고, 실제 `\0` 을 출력하고 그걸 복사해서 집어넣..
·Programming/Coding
실제 졸업 프로젝트에서도 MSA 관련 프로젝트를 진행했었고, 다수의 컨퍼런스, 테크톡에서 흔히 찾아볼 수 있는 주제가 MSA 이다. 새로운 개인 프로젝트를 MSA 구조를 사용해보려 하다가 좋은 영상이 있어 정리하고자 한다.API Gateway Framework 나를 포함해 대부분이 API Gateway 라고 여길만한 구조이다. 하나의 엔드포인트를 가지며 게이트웨이에서 다양한 마이크로서비스에 접근하는 것처럼 보인다. 하지만 안타깝게도 해당 구조는 API Gateway Pattern 이라 말할 수 없다. API Gateway Pattern 정의마이크로서비스 패턴 책에 나오는 예시는 위와 같다.앞선 그림과 차이점이 무엇일까??가장 쉽게 찾아볼 수 있는 것은 호출 메서드의 차이이다. 위에서는 클라이언트가 마이..
·Programming/Coding
CI/CD 과정은 총 7 단계로 이루어져 있다.(현재 레포지터리 기준) User 가 Master(Main) Branch 에 Pull Request 발생시킨다.Github 는 Pull Request 를 기준으로 Github Actions 를 실행시킨다.Github Actions 내부에서 CI 과정이 진행되며, Build 결과 파일 (Jar) 이 생성된다.Github Actions 는 S3 에 해당 파일을 업로드한다.Github Actions 가 CodeDeploy 에 Deployment 를 생성한다.CodeDeploy 는 S3 로 부터 빌드 파일을 가져온다.CodeDeploy 가 Ec2 에 해당 빌드 파일을 전달하며 스크립트를 실행시킨다.Github Actions, AWS 를 사용한 전형적인 CI/CD 과..
·Programming/Coding
개요백엔드 개발 시 main 브랜치 push 에 따라 자동 배포를 통해 개발 서버를 유지하고자 한다. 이를 위해 이전 포스팅에서는 Github action 와 AWS 의 S3, CodeDeploy, EC2 를 사용해서 배포하였다.이번에는 Docker 를 사용해 DockerHub 와 EC2 만으로 간단하게 배포해보자.전체적인 구조는 위와 같다.Github 에 push 시에 Github Action 이 동작한다.Github Action 을 통해 Docker 이미지가 생성되고 Docker Hub 에 저장된다.Github Action 에서 ssh 를 통해 EC2 에 직접 접근해 Docker Hub 의 이미지를 가져와 실행시킨다. 해당 프로세스를 통해 Github push 를 통해 개발 서버를 배포할 수 있다!코..
·Programming/Coding
개요백엔드 개발 시 main 브랜치 push 에 따라 자동 배포를 통해 개발 서버를 유지하고자 한다. 이를 위해 Github action 와 AWS 의 S3, CodeDeploy, EC2 를 사용해서 배포한다.서버는 Spring Boot 를 사용하였다!전체적인 구조는 위와 같다.Github 에 push 시에 Github Action 이 동작한다.Github Action 을 통해 S3 에 코드가 저장되며 CodeDeploy 가 실행된다.AWS CodeDeploy 는 S3 에 존재하는 코드를 EC2 에 복사하고 실행시킨다.해당 프로세스를 통해 Github push 를 통해 개발 서버를 배포할 수 있다!1. AWS 세팅IAM1. IAM 유저 생성가장 먼저 IAM 유저를 생성해야한다.User 를 생성하면 use..
행복한띠용이
'Programming/Coding' 카테고리의 글 목록