분류 전체보기 86

[프로젝트/기술적 의사결정] Kafka vs RabbitMQ, 대규모 트래픽 상황에 맞는 메세징 시스템 선택

요구 사항사용자들이 주문 api 요청을 할 때, 사용자 트래픽이 몰리는 상황에서도 안정적인 주문 처리가 필요했다. 주문이 완료되면 재고를 차감하는 기능이 필요했고, 이때 효율적으로 주문을 처리하고 트래픽을 관리하기 위해 메시징 시스템을 도입하기로 결정했다. 기술 선택지RabbitMQKafka 선택한 기술 및 근거두 가지 기술 선택지 중, 어떤 시스템이 더 적절한지 검토할 때 아래와 같은 상황을 고려했다.▪️트래픽 처리 능력 : 높은 동시 요청 상황에서의 안정성이 필요하다. ▪️메세지 전달 보장 : 주문이 실패 없이 처리되어야 하며, 중복 주문이나 데이터 손실을 방지해야 한다. ▪️재고 관리 : 주문이 완료되었을 때 재고를 정확히 차감해야 한다. 이제 각 기술 선택지를 비교해보면서 결론을 내려보자.  1...

[프로젝트] MSA 기반 대용량 트래픽 프로젝트 설계 및 S.A 문서

MSA 기반 대규모 트래픽 처리 팀 프로젝트에 들어가면서, 초반 요구사항을 정리하고 ERD를 설계하는 동안 들었던 고민들과 그 결과를 정리해두려 한다.이번 프로젝트는 요구사항이 미리 정해진 게 아닌, 팀원들과 함께 상의해서 요구사항을 정하는 프로젝트였으므로 요구사항과 도메인 구성 등등을 정하기 위한 회의를 진행했다. 🔹요구 사항요구사항의 경우, 팀원들 모두가 개발 시 공통적으로 지켜야 할 요구 사항과 도메인 별 요구 사항으로 나누어 토론하고 결정했다. 🔗전체 요구사항 보러가기 요구 사항 정리 | Notion필수 구현 사항teamsparta.notion.site 🔹테이블 명세서 및 ERD🔗테이블 명세서 보러가기 테이블 명세서 | Notion유저(p_users)teamsparta.notion.site..

[programmers lv1.python] 달리기 경주 풀이 (시간초과 해결)

https://school.programmers.co.kr/learn/courses/30/lessons/178871 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제문제는 간단하다 ! 해설진이 이름을 부르는 선수는 달리기 경주 중 현재 자리에서 추월한 선수이므로, 선수들 리스트에서 한 칸 땡겨오면 되는 것! 1차 풀이 (시간 초과 실패)def solution(players, callings): for call in callings: # 호출된 이름(call)의 현재 인덱스 찾기 idx = players.index(call) # 첫 번째 원소가 아니라면 ..

[내배캠 Spring 심화 트랙 1기 후기] 배움에 목마른 개발자라면!

필자는 일주일 전 내일배움캠프 Spring 심화 트랙 1기를 막 수료한 따끈따끈한 수료생이다.점점 높아지고 있는 신입의 기준 문턱 아래에서, 나와 같이 실력적 성장을 위해 너무나 노력하지만 독학의 한계에 부딪히고 있는 개발 취준생에게 조금이나마 도움이 됐으면 해서 이 후기(겸 회고)를 적는다.✏️ 심화 트랙 이전의 삶필자는 개발 공부를 시작한지 1년 정도가 지난 취준생이었다. 작년에 KDT 국비 부트캠프를 수료하고, 실력적으로 부족함을 느껴 개인 프로젝트를 했다. 이후 마음 맞는 분들과 MSA 팀 프로젝트를 한 개 더 하며 한 계단씩 성장하면서 기본기를 충실히 쌓아왔다고 생각했다. 하지만 마지막 프로젝트를 하며 느꼈던 아쉬움이 내배캠을 선택한 계기가 되었다. ✏️내배캠 심화 트랙을 선택한 계기심화 트랙을..

Review 2024.11.01

[AWS] 프리티어를 쓰고 있었는데 나도 모르는 요금이 청구됐다면?!

Gmail을 확인하다가 평소와는 다른 .. 매우 급해보이는 (?) 메일이 AWS에서부터 온 걸 확인했다.내용인 즉슨, 비용이 연체되고 있으니 계정 정지되고 싶지 않으면 돈 내라는 소리였다.머선 소리지 이게..? 난 분명 프리티어 버전을 쓰고 있었는데 말이야 ..  비용 분석 탭을 보니 Amazon Virtual Private Cloud (VPC) 관련 비용이 발생하고 있는 것 같았다.  원인자세히 알아보니 달 마다 약 5000원 씩 결제가 됐어야 했다. (중간에 해당 카드를 잃어버려 재발급을 받았었는데 그거 때문에 비용이 청구되고 있었던 걸 몰랐던 것 같다 😢) 원인 파악을 위해 검색 중 아래의 소식을 발견했다. 공지 – AWS Public IPv4 주소 요금 변경 및 Public IP Insights..

Cloud/AWS 2024.10.10

[programmers lv.1 python] '로또의 최저 순위와 최고 순위' 풀이

https://school.programmers.co.kr/learn/courses/30/lessons/77484 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 흥미로운 문제였다. 처음엔 for문으로 lottos를 순회하면서 win_nums와 겹치는 숫자를 구분하려고 했는데, lottos의 원소 중 0이 나오면 처리를 어떻게 해야할지 막혀서 고민을 오래 했다.고민을 오래 한 이유 중에는 0이 모두 당첨 번호일때와 모두 틀릴 때, 몇개는 당첨 번호이고 몇 개는 틀린 경우일 때도 생각해줘야 한다고 생각해서도 있었다. 하지만 문제의 제목이 '최저 순위와 최고 ..

[boj 1092.python] '배' 풀이 (feat. 언어만 바꿔도 통과, Python3와 PyPy3의 차이)

https://www.acmicpc.net/problem/1092  1차 시도 👉 시간 초과 실패N = int(input()) # 크레인 갯수cranes = list(map(int, input().split())) # 각 크레인의 무게 제한M = int(input()) # 박스의 갯수boxes = list(map(int, input().split())) # 각 박스의 무게cranes.sort(reverse = True)boxes.sort(reverse = True)# 예외 처리if boxes[0] > cranes[0]: print(-1)# 시간이 얼마나 걸리는지 계산time = 0while boxes: time += 1 for crane in cranes: # 각 크레인이 ..

Algorithm/BaekJoon 2024.09.23

[IntelliJ] 패키지 생성 시 .(점) 하위로 생성되는 디렉토리 구조 변경

인텔리제이에서 처음 패키지를 생성하면서 구조를 잡을 때, .(점) 하위로 패키지가 생성되는 문제(?)를 전에도 겪었어서 구글링으로 해결한 적이 있다. 이번에 새로운 프로젝트를 들어갈 때도 패키지 구조가 똑같이 잡혔는데, 아 이거 어떻게 해결했더라 ... 하다가 또 구글링을 해서 해결하는 바람에 ㅎㅎ 아예 내 블로그에 해결 방법을 박제해두려고 한다. 방법은 아주 쉽다!왼쪽 상단의 프로젝트 옆 점 세개(Settings) 클릭 > Tree Appearance 클릭 > Compact Middle Packages 체크 표시를 해제해주면 된다.  참쉽죠?

General/IntelliJ 2024.08.26