📚 열심히 공부하고 기록해서 남주자!

전체 글 109

[회고] 골든플래닛 2달간 인턴 생활 회고 ~ 더하고 싶다~ 일하게 해주세요~

오늘 골든플래닛의 마지막 날이었다. 제로인턴 동기 분의 AI를 통한 영상제작 관련 최종발표 이후 나의 간단한 회고 발표가 있었다. 인턴 생활동안 어떤 작업들을 진행했는지, 어떤 문제들을 만났고 어떤 해결점을 가져갔는지에 대해 고민한 내용들을 발표했다.농정원 agriedu-ai 프로젝트추천 AI의 API를 FastAPI로 서빙하는 프로젝트의 초기 프로젝트 세팅과 CI/CD 구축 및 최종 API 서빙까지 완성했었다. 더 고도화해야 부분들이 있지만 시간 관계상 참여하지 못한게 너무나도 아쉬웠다. (일 좀 더 시켜주세요..제발..아쉽다..) 어떻게 고도화 시키실지 사수분께 물어보니까 추천 AI의 각각 하나당 API가 다 돈이기에 REDIS의 TTL을 사용해서 새로고침과 같이 같은 user_id와 이벤트면 RED..

MyStory/회고 2025.10.02

[GCP] Cloud Build - invalid argument에러 & 에러코드 status:125

문제1 : 빌드 즉시 실패 (invalid argument 에러)발생 현상Cloud Build 트리거가 실행되었으나, 빌드 로그가 생성되기도 전에 즉시 실패invalid argument 에러가 표시 발생 원인가설Cloud Build는 기본적으로 빌드 로그를 Cloud Storage 버킷에 저장한다. 이 버킷이 없거나, Cloud Build 서비스 계정이 해당 버킷에 로그를 쓸 권한이 없어 빌드가 실패하는 것이다.시도한 해결책cloudbuild.yaml 파일에 options을 추가하여 Cloud Build의 기본 동작을 변경함# cloudbuild.yaml 아래 내용 추가...options: logging: CLOUD_LOGGING_ONLY“이 설정을 통해 Cloud Storage 버킷에 로그를 저장하는..

[GCP] Cloud Build - CI/CD

VM과 같은 GCP 환경을 이용한다면 Cloud Build로 CI / CD 구축을 추천한다. 순차적으로 어떠한 것들이 필요한지 정리해 놓았다. ✅ 사전 준비본격적인 Cloud Build를 활용한 CI/CD 구축에 앞서서 아래 항목들이 준비되어 있어야 합니다.GitHub Repository: 내부에 애플리케이션을 이미지 빌드하기 위한 Dockerfile 이 포함된 소스 코드 저장소GCP 프로젝트 & VM 인스턴스 : VM에는 Docker가 설치되어 있어야 합니다.API Enable 활성화Cloud Build APIArtifact Registry APICompute Engine APIGCP 콘솔 상단이 검색창을 클릭하여 아래의 API 이름을 각각 검색하여 검색 결과에 나타난 API를 클릭 후 “사용” (E..

[Git] 팀 프로젝트 전 꼭 알아야 할 Git 지식 정리

여러 팀 프로젝트를 경험하면서 git을 사용하지 않을 수 없었다. 코드를 카카오톡으로 ctrl+c, ctrl+v 공유하는 불상사를 막기 위해 팀협업을 위해 꼭 필요한 tool이 git이다.함께 협업하며 개발을 효율적하기 위한 Git Flow 브랜치의 5가지 종류, 각자 컴퓨터에서 작업 후 합쳐야할 때 어떤 식으로 커밋의 히스토리 내역을 관리할지 정하는 Merge 3가지 전략, 서로의 소통을 위해 커밋 컨벤션, PR 규칙의 예시들을 정리해보았다. Git Flow 브랜치 5가지 종류어떻게 효율적으로 깃 브랜치를 관리할 수 있을지에 대한 전략이다. `main(master)`, `release`, `develop`, `feature`, `hotfix` 이렇게 총 5가지로 브랜치를 정의해서 사용한다. main(..

[Kernel 360] KBE 5기 회고

만족과 아쉬움의 교차최종 프로젝트 때 발표를 맡았었다. 첫번째로 발표가 진행됐고 다른팀들의 발표들을 경청하며 우리 프로젝트에서 놓쳤던 것들 아쉬웠던 것들을 돌아보게 되었다. 테크돔에서는 1분에 15000TPS의 부하를 감당해내는 서버를 만들어야했었는데 인상 깊었던 팀의 발표에서는 바로 메세지큐를 도입한 것이 아니라 단계별로 메시지 큐를 도입하게 된 계기를 적어놓은게 인상적이였다. 커넥션 풀이 부족하여 커넥션 풀을 증가시켜보고 근본적인 문제를 해결하기 위해 비동기 방식과 멀티스레드를 이용하여 메세지 큐를 이용하는 단계까지 단계별로 잘 정리해서 발표한 것이 인상적이었다. 프론트, 백엔드 구조 리팩토링 하다가 시간 보낸게 너무 많은 게 아쉬웠다. 자꾸 구조를 바꿀 때마다 자잔바리 버그들이 발생해서 버그 수정..

MyStory/회고 2025.08.14

Java 핵심 정리

Introjava를 접한지 벌써 한달이 넘어간다.. 이제 좀 자바가 익숙해지고 알 것 같다는 느낌이 들지만 아직 깊게 파고 들기에는 먼 듯한 느낌이다. 지금까지 java를 사용해보고 박은종 디렉터님의 2시간 가량의 핵심만 뽑은 자바 강의를 듣고 정리하는 시간을 통해 java 전문가가 되기 위한 한걸음 나아가 보겠다! OOP 객체지향프로그래밍👨‍💻언어의 실행 시점자바와 파이썬과 같은 언어로 작성한 코드를 실행하는 2가지 종류가 있다. 실행시키는 시점의 차이가 있다. 인터프리터 방식 vs 컴파일 방식인터프리터 방식은 파이썬과 같이 한 줄씩 실행되는 방식을 의미한다. 한 줄씩 실행하면서 에러가 실시간으로 그 줄에 컴파일 에러가 난다. 컴파일 방식은 코드를 전체 묶음으로 한 번에 실행한다. 에러를 미리 파..

Java 2025.06.07

Swagger 와 Spring Boot 버전 충돌. (Global Exception Handler 도입 이후 Swagger 작동 중단 이슈, Spring Framework 6.2.x 는 springdoc-openapi 2.7.x 이상부터 사용하세요. )

문제 개요프로젝트에서 Global Exception Handler를 도입해서 예외 처리를 구성해서 공통적인 에러처리를 @RestControllerAdvice를 통해 구성했다. 또한 api 문서를 자동화할 수 있게끔 Swagger를 도입했었다. 글로벌 익셉션 핸들러를 도입한 이후 테스트를 해보니 잘 돌아가던 Swagger가 먹통이 되버렸다. 해결엥? 잘 돌아가고 있었는데.. 문제를 해결한 결론부터 말하자면, 이 이슈는 Swagger와 Spring Boot 버전 간의 충돌문제였다. build.gradle에서 swagger 사용을 위한 springdoc-openapi-starter-common 2.5에서 2.7 버전으로 올려주니 무사히 잘 되었다. 그럼 이전에는 됐는데, 글로벌 익셉션을 구현하니까 왜 안됨?우..

Spring/Spring Boot 2025.05.28

[React] 리엑트 핵심정리!

⭐React 작동 흐름1️⃣HTML 진입점 ( index.html ) 브라우저가 HTML을 읽을 때 id="root"인 "div"를 DOM에 생성하고 main.tsx파일을 모듈로 불러온다.2️⃣main.tsx - React 앱 진입점import { createRoot } from 'react-dom/client'import App from './App'createRoot(document.getElementById('root')!).render() document.getElementById('root')로 위 HTML의 div#root를 DOM에서 가져옴createRoot(...).render()는 그 안에 React 앱(컴포넌트 트리의 루트) 를 렌더링3️⃣App.tsx - 최상단 컴포넌트export d..

REACT 2025.05.01

[4/30 TIL] Spring Boot 공부, ORM,JPA에 대해

Spring Boot 실전에서의 예외 처리 방법들을 공부했다. 글로벌 예외 처리를 해도 특별한 경우 예외 처리를 하고 싶을 때의 여러 방법들에 대해 공부했다. Controller에서 직접하는 방법, @RestControllerAdvice(basePackages = “”) 사용방법, basePackageClasses 사용, 어노테이션으로도 가능하다고 한다. 실제 현업에서는 모든 예외처리를 관리하는 글로벌 예외 처리를 구현하고 커스텀하게 구현해야 할 것들은 우선적으로 해야할 것들을 나열하고 관리한다. 구분 설명 예시@RestControllerAdvice전역(Global) 예외 처리기@RestControllerAdvice()@ExceptionHandler특정 예외 처리 핸들러@ExceptionHandler(N..

Spring/Spring Boot 2025.04.30

[Spring Boot] 직렬화, 역직렬화 해주는 Object Mapper 톺아보자!

Object Mapper (Jackson 라이브러리 사용법)Object Mapper스프링 부트에서 직렬화, 역직렬화 수행해준다. (JACKSON 사용)JSON → DTO ( 역직렬화 )DTO → JSON (직렬화)변수가 아닌 method에 매칭이 된다.Object Mapper 불러오기@SpringBootTestclass DemoApplicationTests { @Autowired // 스프링에서 관리하는 빈들 중에 자동으로 생성되는 ObjectMapper를 가져오겠다. private ObjectMapper objectMapper; // dto를 json으로 바꾸는게 직렬화 @Test void contextLoads() throws JsonProcessingException { ..

Spring/Spring Boot 2025.04.30