목록개발Article (143)
밤빵's 개발일지
협업 프로젝트를 진행하면서 Git을 사용하게 되었고, 커밋과 머지는 코드 관리에서 핵심적인 개념이다. 하지만 아직 Git 사용에 익숙하지 않은 나로서는 이 두 개념이 어떻게 활용되는지 제대로 이해하기 어렵다. 주특기 주차 때 커밋이랑 푸쉬하면서 과제를 날려먹은적이 있어서 아직도 깃사용은 손이 떨린다😢 이번에 프로젝트를 진행하며 커밋과 머지의 개념을 정확히 배우고, 협업에서 어떻게 활용하는지 기록해두려고한다. ▶ 커밋(commit)커밋은 버전 관리에서 하나의 변경 내역을 저장하는 행위이다. Git을 사용하는 개발에서는 파일을 수정하고 그 변경 사항을 기록하기 위해 커밋을 한다. 커밋을 통해 코드가 저장되고, 특정 시점으로 되돌릴 수 있는 일종의 스냅샷이 생성된다.커밋 메시지를 통해 어떤 작업이 이루어졌..
🤓프레임워크와 라이브러리프레임워크와 라이브러리는 소프트웨어 개발에서 매우 중요한 개념이다. 개발을 하면서도 자주 접하게 되는데, 이 둘의 차이점을 명확하게 이해하지 못하고 있었다. 이번 개발일지에서는 프레임워크와 라이브러리의 개념과 차이점, 그리고 백엔드 개발에서 자주 사용하는 예시들을 정리해봤다. ▶ 프레임워크란?프레임워크는 전체적인 구조와 흐름을 미리 정의해 둔 틀이다. 개발자는 그 틀 안에서 코드를 작성하고, 프레임워크가 제공하는 규칙과 구조를 따라야 한다. 프레임워크는 개발자가 호출하는 것이 아니라, 프레임워크가 개발자의 코드를 호출하는 방식이다. 이를 제어의 역전(Inversion of Control, IoC)이라고 한다. ▶ 스프링 프레임워크 예시대표적인 백엔드 프레임워크로 Spring F..
결제기능이 테스트가 너무 안되서 포스트맨만 돌려보고있다가, 테스트코드에 대한 설명을 들었다. 작성해본적도 없고, 강의를 듣지도 않아서 잘 모르는 내용이라, 테스트코드에 관한 개발일지를 작성하기로했다. 오늘 개발일지에서는 결제 기능에 대한 테스트 코드를 작성해 보았다. 결제 기능은 사용자와의 신뢰를 구축하는 중요한 부분이기 때문에, 이를 검증하기 위한 테스트 코드는 좋은방법인 것 같아서! 테스트를 통해 예상치 못한 버그나 결제 처리 실패와 같은 문제를 미리 발견하고, 이를 해결할 수 있다.▶ 스크린샷을 통한 테스트코드 설명 (with 정재님) → 테스트 코드에서 Mock 객체를 활용하여 테스트에 필요한 가짜 데이터를 주입하는 방법을 보여준다. MockitoAnnotations.openMocks(this)를..
N+1 문제를 굳이굳이 발생시키고도 감을 못잡아서 결국 기술매니저님께 숙제를 다시 받아버렸다. 꼭 해결해보기로! 직접 해결방법까지 보여주셨지만 또 버벅거려서 시온님께 다시 여쭤보고 현재 진행하고 있는 팀 프로젝트에 적용해봤다. 🤓N+1 문제 발생과 해결 과정▶ 기술매니저님이 보여주신 예시 분석!→ TestEntity 클래스가 ProductEntity와 @OneToMany 관계로 설정되어 있고, fetch = FetchType.LAZY로 지연 로딩이 설정되어 있다. ▷ 관련 설명 → Service Layer (TestService):TestService 클래스의 test() 메서드는 TestEntity를 조회한 후 entity.getTestEntities()를 호출하고 있다. fetch = Fetch..
API 게이트웨이는 마이크로서비스 아키텍처(MSA)에서 중요한 역할을 하는 중간 계층으로, 클라이언트 요청을 적절한 백엔드 서비스로 라우팅하고, 요청과 응답을 조작하며, 다양한 기능을 제공한다. 예를 들어, 인증, 권한 부여, 로깅, 로드 밸런싱, 속도 제한, 캐싱, 모니터링 등을 API 게이트웨이를 통해 구현할 수 있다. 🤓API 게이트웨이란?API 게이트웨이는 클라이언트와 백엔드 서비스 사이에 위치하는 중간 계층으로, 클라이언트 요청을 적절한 서비스로 전달하고 응답을 다시 클라이언트에 반환하는 역할을 한다. 이를 통해 클라이언트는 다양한 서비스 엔드포인트에 직접 접근할 필요 없이 API 게이트웨이를 통해 모든 요청을 관리할 수 있다. API 게이트웨이의 주요 기능은 다음과 같다.→ 요청 라우팅(Re..
🫨Locust와 nGrinder를 이용한 부하 테스트부하 테스트(Load Testing)는 소프트웨어 애플리케이션의 성능을 측정하고, 다수의 사용자 요청을 처리할 수 있는 시스템의 한계를 파악하는 중요한 절차이다. 결제 기능과 같이 민감한 데이터를 처리하는 백엔드 시스템에서는 고가용성, 안정성, 성능 최적화가 매우 중요하다. 그래서 Locust와 nGrinder 같은 도구를 사용해 부하 테스트를 수행하면 시스템이 얼마나 많은 사용자 요청을 견딜 수 있는지, 그리고 응답 시간은 어떤지 등을 확인할 수 있다. 이번 개발일지에서는 Locust와 nGrinder라는 두 가지 부하 테스트 도구에 대해 알아보고, 예시 코드를 통해 이를 결제 기능에 어떻게 적용할 수 있는지 지금 구현 중인 코드에 적용해봤다! ▶..
결제 기능을 구현하면서 웹훅(Webhook)이라는게 꼭 붙어있어서 내가 해야하는 부분인 줄 알고 공부해야하나? 라는 생각을 갖고있었다. 특히 포트원(PortOne)과 같은 결제 대행 서비스를 사용하면서 웹훅이 어떤 역할을 하는지 이해하는 게 필요하다고 생각했고, 매니저님이 프론트영역이라고는 하셨지만, 웹훅이라는 이름이 맘에들었기 때문에🤣 내용을 정리하기로 했다! 😚웹훅(Webhook)?웹훅(Webhook)은 서버에서 특정 이벤트가 발생할 때 다른 서버의 특정 엔드포인트(URL)로 HTTP 요청을 보내는 방식의 비동기적 통신 방법이다. 쉽게 말해, 웹훅은 이벤트 기반으로 동작하며, 서버 간의 데이터를 실시간으로 전달하는 데 매우 유용하다. 웹훅을 이용하면 서버가 특정 이벤트(예: 결제 완료, 주문 상태..
🤓인 컨텍스트 러닝(In-Context Learning)과 Spring Boot 활용!인 컨텍스트 러닝은 최근 자연어 처리(NLP) 분야에서 주목받고 있는 개념으로, AI 모델이 학습된 데이터 이외의 추가적인 학습 없이도 특정 문맥(context) 내에서 제공되는 예제를 기반으로 새로운 작업을 수행할 수 있게 하는 방법이다. 전통적인 머신러닝과 딥러닝 모델에서는 학습을 위해 데이터셋과 레이블을 활용한 모델 훈련이 필요하지만, 인 컨텍스트 러닝은 별도의 재학습 없이도 주어진 문맥에서 새로운 작업에 적응할 수 있다는 점이 특징이다. ▶인 컨텍스트 러닝이란?인 컨텍스트 러닝은 미리 학습된 AI 모델이 주어진 문맥(Context)에 대한 이해를 기반으로, 새로운 작업을 수행하는 능력을 말한다. 예를 들어, ..
나는 팀 프로젝트를 이어가고있기 때문에 다른 사람들이 하는 개인프로젝트에 관심이 많아서 이것저것 물어보고 다니고 있다. 그렇게 개인프로젝트 내용들을 들으면서 스케줄러와 같은 여러 키워드를 알게됐는데 Spring batch라는게 대규모 데이터 처리를 위해 설계된 프레임워크란걸 알게되서 오늘 개발일지 소재로 쓰게되었다.Spring Batch는 대용량 데이터 처리에 최적화된 스프링 프레임워크의 서브 프로젝트로, 배치 애플리케이션을 개발하기 위한 도구이다. 배치 애플리케이션은 대량의 데이터를 백그라운드에서 처리하는 작업으로, 금융 결산, 데이터 마이그레이션, 대규모 데이터 분석 등 다양한 분야에서 사용된다.▶ Spring Batch란 ?Spring Batch는 스프링 프레임워크를 기반으로 하는 배치 처리 프레임..
파인튜닝(Fine-Tuning)은 머신러닝, 특히 딥러닝 모델에서 사전 학습된 모델을 특정 작업에 맞게 추가로 학습시키는 과정이다. 파인튜닝을 통해 기본적인 패턴을 이미 학습한 모델을 사용해서 새롭고 특정한 데이터에 대해 더 나은 성능을 얻을 수 있다. 예를 들어, 기본적으로 이미지 인식을 학습한 모델을 기반으로 고양이와 개를 구분하는 모델을 파인튜닝할 수 있다. 예시 코드는 지금 구현하고있는 결제기능에서 서비스클래스 코드를 예시 코드로 사용했다. ▶ 파인튜닝의 개념과 필요성 ▷ 파인튜닝의 개념파인튜닝은 사전 학습된 모델을 재사용하여 특정 도메인이나 데이터셋에 맞게 최적화하는 과정이다. 사전 학습된 모델은 대규모 데이터셋으로 일반적인 패턴을 학습하며, 이를 "전이 학습(Transfer Learning)..