전체 글 13

[한국대학생IT경영학회] 큐시즘 33기 밋업 프로젝트 후기: 뭉치장

큐시즘 33기에서 뭉치장 백엔드 개발을 진행했다. 뭉치장은 베이커리 웨이팅이 싫은 빵 덕후들이 원하는 매장의 빵을 목표 수량 달성 조건으로 함께 모아 공동구매하고, 지정 픽업일에 웨이팅 없이 직접 수령할 수 있는 베이커리 단체구매 중개 서비스다. 백엔드에서는 단순 CRUD보다, 공동구매라는 도메인 특성상 결제와 상태 변화가 실제 비즈니스 정합성에 직접 연결되는 문제가 많았다.특히 결제가 됐는지보다 결제가 되어도 시스템 상태가 틀어지지 않는지, 운영 환경에서 같은 작업이 중복 실행되지 않는지를 더 중요하게 생각했다. 1. 결제 승인에서 중복 처리와 초과 참여를 막았다공동구매 결제는 일반적인 단건 주문 결제보다 상태가 복잡했다.결제가 성공하더라도 그 시점에 공구가 아직 참여 가능한 상태인지, 남은 수량이 ..

후기 2026.06.12

배포 시간 14분에서 53초로: 빌드 구조 개선과 ARM64 정합성 해결

CI/CD를 운영하면서 dev 배포를 돌리던 중 컨테이너가 Restarting 상태로 머물렀고, /dev/health, /dev/swagger-ui/index.html도 정상 확인이 되지 않았다.애플리케이션 설정 문제를 먼저 의심했지만, 로그에서 exec format error가 반복적으로 확인됐다.exec format error는 바이너리(또는 이미지 내부 실행 파일) 아키텍처가 런타임과 맞지 않을 때 발생하는 대표적인 에러다.실제 EC2는 ARM64(aarch64)인데, GitHub Actions에서 빌드한 이미지는 기본값으로 amd64가 생성되고 있었다.즉, 배포 성공과 실행 가능이 분리된 상태였고, 먼저 아키텍처 정합성을 맞추는 게 우선이었다. 1. 실행 실패부터 해결: ARM64 아키텍처 정합성..

Backend 2026.05.31

[한국대학생IT경영학회] 밋업 프로젝트 중간 회고

오늘은 큐시즘에서 진행하는 밋업 프로젝트의 중간 회고를 작성해보려고 한다. 큐시즘은?큐시즘은 비전을 가지고 함께 성장하는 학회로 기획, 디자인, 개발파트로 구성되어 있다. 기업 연계 프로젝트, 밋업 프로젝트, 전문가 초청 강연 등 다양한 활동이 존재한다.자세한 내용은 큐시즘 공식 홈페이지에서 확인할 수 있다. 큐시즘(KUSITMS) - 한국대학생IT경영학회비전을 가지고 함께 성장하는 학회, 큐시즘의 공식 홈페이지입니다.www.kusitms.com 밋업 프로젝트란?기획 파트에서 발제된 아이디어를 디자인, 개발 파트와 함께 3개월 동안 준비해서 발표하는 큐시즘의 메인 프로젝트이다. 아이디어 발제와 커피챗기업 연계 프로젝트를 진행하는 동안 기획 파트는 주제를 선정하고, 기업 연계 프로젝트 이후 선정된 주제에 ..

후기 2026.05.10

포트는 하나로, 배포는 더 명확하게: Nginx 리버스 프록시와 ECR 전환기

CI/CD 구성 이후 애플리케이션 배포 구조를 운영 관점에서 다시 한번 정리했다.다음과 같은 목적으로 작업을 진행하려고 했다.외부 접근 경로를 단순하게 만들고배포 흐름을 더 일관되게 정리하고dev/prod를 명확하게 분리하는 것이번 글에서는 Nginx 리버스 프록시 도입부터 ECR 기반 배포 전환까지를 단계별로 정리할 예정이다. 경로 기반 라우팅이 필요해진 이유초기에는 dev/prod 컨테이너를 포트로 분리해서 접근했다. 검증 단계에서는 빠르고 단순했지만, 운영 관점에서는 불편했다.어떤 포트가 어떤 환경인지 계속 기억해야 하고외부에 앱 포트를 직접 열어두는 구조가 되며라우팅 규칙이 애플리케이션 밖으로 분산된다그래서 외부 진입점은 80 포트 하나로 두고, 내부 라우팅은 Nginx가 맡는 구조로 바꿨다.Ng..

Backend 2026.05.08

서버 접속 배포에서 GitHub Actions 자동 배포까지, CI/CD 구성하기

Docker 기반 실행 구조와 CI/CD 워크플로우 구성 AWS 인프라, 콘솔 대신 Terraform으로 관리해보자그동안 프로젝트를 진행하면서 필요한 리소스들은 AWS 콘솔에서 직접 만들어서 사용했다. EC2, S3, RDS, Redis와 같은 리소스를 하나씩 늘려가면서 작업했다.콘솔에서 필요한 순간에 바로 만들 수 있zerozeroseven.tistory.com이전 글과 같이 Terraform으로 인프라 구성을 정리한 뒤에는 애플리케이션 배포 흐름을 잡는 작업을 진행했다. 이번에는 Dockerfile 추가부터 GitHub Actions 기반 CI/CD 워크플로우 구성까지 정리해보려고 한다. Dockerfile 추가애플리케이션을 서버에서 일관된 방식으로 실행하려면 먼저 컨테이너 실행 구조가 필요했다. ..

Backend 2026.05.02

AWS 인프라, 콘솔 대신 Terraform으로 관리해보자

그동안 프로젝트를 진행하면서 필요한 리소스들은 AWS 콘솔에서 직접 만들어서 사용했다. EC2, S3, RDS, Redis와 같은 리소스를 하나씩 늘려가면서 작업했다.콘솔에서 필요한 순간에 바로 만들 수 있고, 화면에서 설정을 확인할 수 있다보니 쉽게 느껴졌다. 그런데 리소스가 하나씩 늘어나다보니 생각보다 신경 쓸 부분이 많아졌다. 특히, 삭제할 때 불편했다. 인스턴스를 지웠다고 생각했는데 어디선가 비용이 청구되고 있었고, 어떤 리소스가 어떤 이유로 만들어졌는지도 시간이 지나면 점점 흐려졌다. 콘솔 기반 작업은 어떤 과정을 거쳐 리소스를 만들었는지 기록을 남기기 어려워서 배포 자동화를 고민하면서 다른 방식도 도입해보자는 생각이 들었다. 그래서 Terraform을 도입하게 되었다인프라로 코드를 관리할 수 ..

Backend 2026.04.16

[BOJ 2644] 촌수계산(C++)

https://www.acmicpc.net/problem/2644 문제우리 나라는 가족 혹은 친척들 사이의 관계를 촌수라는 단위로 표현하는 독특한 문화를 가지고 있다. 이러한 촌수는 다음과 같은 방식으로 계산된다. 기본적으로 부모와 자식 사이를 1촌으로 정의하고 이로부터 사람들 간의 촌수를 계산한다. 예를 들면 나와 아버지, 아버지와 할아버지는 각각 1촌으로 나와 할아버지는 2촌이 되고, 아버지 형제들과 할아버지는 1촌, 나와 아버지 형제들과는 3촌이 된다.여러 사람들에 대한 부모 자식들 간의 관계가 주어졌을 때, 주어진 두 사람의 촌수를 계산하는 프로그램을 작성하시오. 입력사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수..

알고리즘/BOJ 2026.04.12

[한국대학생IT경영학회] 큐시즘 33기 개발 백엔드 파트 합격 후기

오늘은 한국대학생IT경영학회 큐시즘 백엔드 파트에 지원하고 합격하기까지의 과정을 작성해보려고 한다. 대학교 졸업 전 마지막으로 동아리 활동을 하고 싶어서 여러 IT 동아리를 찾아봤다. 외부 프로젝트에는 참여해봤지만 동아리는 경험이 없었고, 동아리에서는 주기적으로 오프라인 세션이 있기 때문에 네트워킹과 협업을 더 깊게 할 수 있을 것 같았다.그 중에서 큐시즘을 알게 되었고 실무를 간접적으로 경험할 수 있는 기업 연계 프로젝트를 경험하고 싶어서 큐시즘에 지원하게 되었다.여러 블로그에서 자소서와 면접 후기를 찾아보았고 많은 도움을 받아서 다른 기수에 새롭게 지원하는 사람들에게 도움이 되었으면 해서 과정을 쓰게 되었다. 큐시즘은?큐시즘은 비전을 가지고 함께 성장하는 학회로 기획, 디자인, 개발파트로 구성되어 있..

후기 2026.03.23

콤마 하나 때문에 구글 로그인이 실패했던 이유

구글 소셜 로그인을 구현하던 중 아래와 같은 에러가 발생했다.ERROR 1167065 --- [emotion-storage] [io-8080-exec-10] c.g.a.c.a.openidconnect.IdTokenVerifier : id token signature verification failed. Please see docs for IdTokenVerifier for default settings and configuration options 로그 메시지 상으로는 구글 ID 토큰의 서명 검증이 실패한 것처럼 보여서 처음에는 아래와 같은 문제들을 의심했다.Google OAuth Client ID 설정 오류ID 토큰 만료JWT 서명 검증 실패GoogleIdTokenVerifier 설정 문제특히 구글 로..

Backend 2026.03.14

[BOJ 1912] 연속합(C++)

https://www.acmicpc.net/problem/1912 문제n개의 정수로 이루어진 임의의 수열이 주어진다. 우리는 이 중 연속된 몇 개의 수를 선택해서 구할 수 있는 합 중 가장 큰 합을 구하려고 한다. 단, 수는 한 개 이상 선택해야 한다.예를 들어서 10, -4, 3, 1, 5, 6, -35, 12, 21, -1 이라는 수열이 주어졌다고 하자. 여기서 정답은 12+21인 33이 정답이 된다. 입력첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. 출력첫째 줄에 답을 출력한다. 풀이처음에는 누적합을 구해서 모든 경우의 수를 다 구하려고 했으나 O(n2)으로 ..

알고리즘/BOJ 2026.03.09