분류 전체보기 19

[OffNal] 교대근무 루틴 관리 앱, Offnal 출시까지의 기록

IT 동아리를 통해 교대근무 루틴 관리 앱 Offnal을👉 디자인 1명, 프론트엔드 2명, 딥러닝 2명, 백엔드 2명 총 7명이서 개발하였다. 처음 이 앱은 동아리 내 단기성 프로젝트로 2개월 동안만 진행될 예정이었다.하지만 모든 팀원들이 정말 열심히 참여했고, 끝까지 완성을 향해 달려간 덕분에 감사하게도 우수상을 수상하게 되었다.사실 나는 여러 프로젝트를 해왔지만, 이렇게 모든 팀원이 끝까지 열심히 참여하고, 잡음 없이 매끄럽게 마무리된 프로젝트는 처음이었다. 그래서 이 프로젝트가 단순한 일회성으로 끝나지 않고, 장기적으로 실제 출시까지 이어지기를 바랐다.일회성에서 출시까지의 이어짐이런 생각을 하게 된 가장 큰 계기는 감사하게도 현직자이신 프론트엔드 개발자님 덕분이었다.무언가 갈피를 잡지 못할 때, ..

동아리 활동 2025.12.26

[SpringBoot] cicd/blue-green/docker 빌드-배포까지 성공했지만 새 코드가 반영되지 않는 문제

Blue-Green 배포가 정상처럼 보이는데도 “새 코드가 반영되지 않은 이유 이렇게 녹색불이 들어와서 성공했다는 표시가 떴지만 왼쪽에서 오른쪽으로 변경이 되지 않는다는 팀원의 연락... 애플로그인/탈퇴 하다가 달려갔다. 로그는 전부 정상인데 배포 후 서비스는 계속 이전 코드만 사용하는 문제가 발생했다. 무슨 문제일까 생각해보다가, 이전 다른 프로젝트에서 이런 경험이 있었어서, 혹시나 도커에서 새로운 이미지를 풀하지 못하거나 혹은 새 이미지를 사용하지 않는 것인가? 라고 생각해보았다.역시나...!docker-compose는 latest를 사용하고, deploy 스크립트는 SHA-tag를 pull하고 있었다...docker-compose.ymldocker-compose에서는 spring_blue와 spri..

SpringBoot 2025.11.29

[IntelliJ] 인텔리제이 : 자바 빌드 테스트 시, UTF-8 한글 깨짐 인코딩 문제, error: unmappable character (0xEB) for encoding x-windows-949

Gradle 빌드 하다가 마주한 한글 깨짐 현상,,,.\gradlew.bat clean test 이 명령어를 터미널에 입력하면 아래와 같이 빌드 테스트가 실패했다는 에러가 발생한다. What went wrong:Execution failed for task ':compileTestJava'.> Compilation failed; see the compiler output below. C:\Users\jy829\Downloads\wtc\src\test\java\calculator\ApplicationTest.java:12: error: unmappable character (0xED) for encoding x-windows-949 void 커스??_구분?��_?��?��() { ..

Java 2025.10.18

[SpringBoot] AOP 기반 로깅 시스템 구현하기 - 로그와 비즈니스 로직 트랜잭션은 분리되지만 예외는 공유된다.

2025.09.29 - [SpringBoot] - [SpringBoot] AOP 기반 로깅 시스템 구축하기 [SpringBoot] AOP 기반 로깅 시스템 구축하기Spring Boot로 프로젝트를 진행하다 보면, 로그 관리가 점점 중요해진다.처음에는 @Slf4j 로 콘솔에만 로그를 찍어도 충분하지만,실제 출시를 준비 중이라면, 다음과 같은 생각이 들게 될 것이다.APIjyitdevelopment.tistory.com 지난 포스팅에서 프로젝트 진행 중에 AOP 기반 로깅 시스템을 구축하는 과정의 내용을 담았다. 구현한 코드를 기반으로 같이 프로젝트에 멘토해주시는 현직자분이 리뷰를 해주셨는데, 만약 로그를 저장하는 과정에서 예외가 발생하면, 비즈니스 로직(컨트롤러나 서비스)이 정상적으로 수행되었더라도로그 예..

SpringBoot 2025.10.14

[SpringBoot] JPA / Hibernate / Spring Data JPA

우리가 스프링부트로 프로젝트를 진행하다 보면, jpa / hibernate/ spring data jpa 를 마주한다. 우리는 위 세가지를 통해 데이터를 저장하고 조회하고 삭제하고 수정할 수 있다. JPA (Java Persistence API)JPA는 자바 진영의 표준 ORM 명세이다. 인터페이스와 규칙만 정의한 것이지 실제 구현체는 아니다. JPA 스펙은 데이터베이스와 자바 객체를 매핑하는 방식을 표준화하고, 어떤 메서드가 있어야 하고 어떻게 동작해야 하는지를 정의한다.쉽게 말해 JPA는 "이렇게 해야 한다"는 규칙 모음 이라고 생각하면 쉽다.HibernateHibernate는 JPA를 구현한 구체적인 ORM 프레임워크이다. JPA 표준을 따르면서도 Hibernate만의 추가 기능과 최적화를 제공한다..

SpringBoot 2025.10.13

추상 클래스란

추상 메소드는 자식 클래스에서 재정의해야만 사용할 수 있는 메소드이다.추상 클래스는 이런 메소드를 하나 이상 포함하는 클래스를 추상 클래스라고 한다. 이 재정의한 메소드를 부모 클래스의 객체 변수를 통해 사용하려면 부모 클래스의 객체 변수를 선언할 때 자식 클래스의 생성자를 이용해야 한다. 좀 더 쉽게 말하자면 우리가 집 설계도를 만들고 있는 건축가라고 할 때, 이 집에 문을 달아야 한다고 하자.여기서 설계도는 추상 클래스이다근데 지금은 어떤 문을 달지 아직 미정이다.문의 종류는 워낙 많다.. 자동문,미닫이문,,여닫이문 등등... 그에 따라 문을 여는 방식이 다르다. 그래서 일단 설계도(추상 클래스)에는“문을 열 수 있어야 한다”는 정도만 넣어주는 것이다.즉, 추상 클래스에 open()이라는 추상 메서드..

Java 2025.10.11

[SpringBoot] AOP 기반 로깅 시스템 구축하기

Spring Boot로 프로젝트를 진행하다 보면, 로그 관리가 점점 중요해진다.처음에는 @Slf4j 로 콘솔에만 로그를 찍어도 충분하지만,실제 출시를 준비 중이라면, 다음과 같은 생각이 들게 될 것이다.API 호출 이력을 DB에 남겨야 하지 않을까?요청/응답 값을 모두 로깅하려면 어떻게 할까?예외 발생 시 공통으로 처리할 수 없을까?이런 문제를 해결하기 위해 AOP(관점 지향 프로그래밍) 를 활용해 로그 관리 구조를 구축하였다. 우선 AOP의 개념부터 잡아보자.AOP란? AOP(Aspect-Oriented Programming, 관점 지향 프로그래밍)는 핵심 비즈니스 로직과 횡단 관심사(cross-cutting concerns)를 분리하는 프로그래밍 기법이다.핵심 관심사 (Core Concern)→ 서비..

SpringBoot 2025.09.29

[SpringBoot] 금액권을 Toss 토스 결제 후, QR코드로 생성하기

2025.07.30 - [분류 전체보기] - [SpringBoot] TOSS/토스 결제 API 연동하기 [SpringBoot] TOSS/토스 결제 API 연동하기프로젝트를 진행하면서, 토스 결제 연동을 맡게 되어서, 내가 할 수 있을까 불안했다.내가 먼저 토스 결제 부분을 하고 싶다고 했었기 때문에, 무조건 해내야 하는,,, 압박감이랄까 혹시나 구현jyitdevelopment.tistory.com 이전 글에서는 토스 결제가 성공하면 주문 정보만 DB에 저장하는 수준까지 구현했다.이번에는 프로젝트 요구사항에 맞춰, 결제 성공 시 금액권까지 DB에 저장되도록 개선하였다.요구사항 요약상세 화면에서 선택한 금액(단가)과 개수(수량)만큼 금액권이 생성되어야 함예: 1만원권 3개 결제 → 내 금액권 목록에 1만원 ..

SpringBoot 2025.09.01

[SpringBoot] TOSS/토스 결제 API 연동하기

프로젝트를 진행하면서, 토스 결제 연동을 맡게 되어서, 내가 할 수 있을까 불안했다.내가 먼저 토스 결제 부분을 하고 싶다고 했었기 때문에, 무조건 해내야 하는,,, 압박감이랄까 혹시나 구현하는 데에 시간이 많이 걸릴까봐, 빠르게 시작하였다. 다행히 토스 개발자센터에서 매우 자세히 깔끔하게 연동 가이드를 제시해줘서, 흐름을 이해한 후에는 빠르게 연동을 할 수 있었다.https://developers.tosspayments.com/항상 토스는 UX/UI도 깔끔하고,,, 가이드도 이렇게 쉽고 깔끔하게 작성해주고,, 이래서 토스인가 싶다라는 생각을 다시 한번 하게 된다. 토스(Toss) 결제 연동을 하다 보면, 다음과 같은 두 가지 API 키가 있다는 걸 알게 된다.1. 결제위젯 연동 키 2. API 개별 ..

SpringBoot 2025.07.30

[트러블 슈팅]FastAPI+Spring Boot EC2+Docker+Nginx

현재 나는 교대근무자를 위한 루틴 관리 앱 프로젝트를 진행 중이다.간단히 소개하면, 근무자가 종이로 된 교대근무 일정표를 사진으로 찍으면 OCR로 인식을 해서, 자동으로 저장되고 이걸로 스케쥴 표를 쉽게 앱을 확인하고 관리할 수 있는 앱이다. 이번 주면, 데모데이기에, 다들 밤 새면서 개발 중이다. 서버 쪽은 API 구현이 일찌감치 끝나서, API 연동 작업 중 생기는 오류를 고치도록 대기 중에 있다.그래서 어제는 오랜만에 일찍 자볼까하고, 새벽 2시 반쯤 노트북을 막 끈 상태였다. (요즘 바빠서, 아침 5-6시에 잔다...) 그런데... 갑자기 걸려온 디코 전화..프론트: "비상이야!!!!!! 딥러딩 모델을 서버에 올려서 결과를 받아야 할 것 같아, 근데 지금 다른 작업도 할 게 많이 남아 시간이 없어..

SpringBoot 2025.07.21