프로젝트 리펙토링 (3) - Github API 호출 성능 개선하기 (비동기 처리)
·
프로젝트/GitGet
비동기 처리(Asynchronous)비동기 처리 작업이란 멀티스레드를 사용하여 작업을 분리하고, 작업이 끝날 때까지 대기하지 않고 다른 작업을 처리하는 것을 말한다. Spring Boot에서 비동기 처리는 멀티스레딩 환경에서 비동기적으로 실행되는 작업을 처리하는 것으로, 동기적인 방식과 비교해 처리 속도와 성능을 개선할 수 있다.   사용하는 이유높은 응답성 : 동기적인 방식으로 작업을 처리할 때, 작업이 끝날 때까지 다른 요청을 처리할 수 없다. 예를 들어 외부 서비스와 통신할 때 I/O 작업이 많은 경우 작업이 끝날 때까지 기다리는 대신 다른 요청을 처리하며 시간을 절약할 수 있다.자원의 효율성 : 동기적인 방식으로 작업을 처리할 때는 스레드를 많이 생성하므로 시스템 자원을 많이 사용한다. 비동기처리..
프로젝트 리펙토링 (2) - 인덱스(index) 사용으로 조회 API 성능 개선
·
프로젝트/GitGet
JMeter 사용 방법Apache JMeter 5.6.3 : Source - zip 파일 다운로드테스트 전 유의사항테스트하는 웹 어플리케이션 서버와 테스트를 진행하는 서버는 서로 달라야 한다.같은 서버를 사용하면 같은 메모리를 점유하기 때문에 정확한 값을 측정할 수 없다.JMeter 실행util\\apache-jmeter-5.6.3\\apache-jmeter-5.6.3\\bin> ./jmeter JMeter 구성요소Thread Group : 테스트에 사용될 스레드 개수, 스레드 1개당 사용자 1명Sampler : 사용자의 액션 (예: 사용자 로그인, 게시물 작성, 게시글 조회 등)Listener : 응답을 받아 리포팅, 검증, 그래프 등 다양한 처리Configuration Elements: Sampler..
프로젝트 리펙토링 (1) - Facade Pattern 도입
·
프로젝트/GitGet
퍼사드 패턴을 도입하게 된 배경디자이너, 프론트엔드, 백엔드 총 5명으로 구성된 우리 팀은 올해 초부터 쉴 틈 없이 달려왔다. 매주 팀 회의, 파트별 회의, 프론트/백엔드 회의를 각각 1회씩 진행하며, 기획부터 설계, 개발까지 모두 경험했다. 배포 전에는 통합 테스트를 거쳐 최종적으로 이슈를 해결하고 도메인 등록과 배포를 통해 프로젝트를 성공적으로 마무리하였다. 프로젝트가 종료된 후 일부 팀원은 각자의 삶으로 돌아갔다. 어쩌면 당연한 일이지만, 시작이 있으면 끝이 있다는 게 시원섭섭하다. 알면서도 어쩔 수 없는 감정인 듯하다.배포된 서비스를 사용해보고 프로젝트 코드를 살펴보니 일정에 맞추느라 신경 쓰지 못했던 부분, 아쉬웠던 부분, 개선해 보면 좋을 것 같은 부분들이 보였다. 그중에서도 눈에 띈 부분은 ..
결제 시스템 - 토스페이먼츠 API - 1
·
프로젝트/GitGet
토스페이먼츠 결제 흐름  1. 구매자 결제 요청프론트는 사용자가 입력한 정보를 [결제하기] 버튼을 통해 서버의 결제 요청 API를 호출한다. 백엔드가 해당 [요청 객체]를 가지고 검증을 한 후, 필요한 값들을 채워주고 DB에 결제 정보를 저장한 후에 프론트에 반환한다.2. 결제창 호출 및 구매자에게 결제창 제공프론트는 반환받은 값을 가지고 tossPayments.requestPayment 에 결제 수단과 결제 정보를 통해 토스페이먼츠에 [결제창 호출]을 하게 되고, 구매자는 결제창 모듈을 받게 된다.3. 결제 수단 인증결제창에서 구매자는 일련의 과정 후 최종적으로 결제를 완료하게 된다. 이후, 토스페이먼츠는 결제의 성공 여부 및 관련 파라미터를 콜백 주소로 리다이렉트하게 된다.프론트에서 성공시 파라미터에..
AWS CloudWatch를 이용한 로그 데이터 수집하기
·
프로젝트/GitGet
IAM 역할 설정CloudWatchAgentServerPolicy 정책을 원하는 EC2 인스턴스에 적용한다.AmazonS3FullAccess (기존)CloudWatchAgentServerPolicy (추가)  CloudWatch agent 설치 (ubuntu)wget https://s3.amazonaws.com/amazoncloudwatch-agent/ubuntu/amd64/latest/amazon-cloudwatch-agent.debsudo dpkg -i -E ./amazon-cloudwatch-agent.deb   설정 파일 작성, 수집하고 싶은 Metric 설정sudo vi /opt/aws/amazon-cloudwatch-agent/bin/config.json   Config.json{ "agen..
Github Actions, Slack Webhook 설정
·
프로젝트/GitGet
1. slack api에서 설명하는 3번 과정까지 진행한다.  https://api.slack.com/messaging/webhooks 2. 생성된 slack webhook url을 Secrets 환경 변수에 등록한다.  3. .github/workflows/{파일명}.yml 파일에 아래 내용을 작성한다.  # Slack Webhook 설정 - name: action-slack uses: 8398a7/action-slack@v3 with: status: ${{ job.status }} author_name: Backend fields: repo,commit,message,author mention..