일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- CI/CD
- vm
- 배포
- spring cloud
- 가상화
- 스프링 시큐리티
- 스프링 배치
- 자바
- 스프링
- CS
- ORM
- mysql
- Java
- 웹 서버
- 컨테이너
- computer science
- JPA
- 영속성 컨텍스트
- virtualization
- HTTP
- 도커
- Spring
- 백엔드
- Spring Security
- spring boot
- 스프링 부트
- web server
- Container
- spring batch
- 데이터베이스
- Today
- Total
목록Back-End (74)
개발 일기

사실 모놀로틱 단일 모듈 프로젝트에서 어떻게 모듈화를 진행할지 즉, 어떻게 하나의 모듈을 역할과 책임이 명확한 N개의 모듈로 나눌지에 대한 명확한 답을 찾기 위해 여러 래퍼런스를 찾아봤지만 사람들마다 다른 관점을 가져 하나로 모으기 힘들었고 그냥 여러 래퍼런스를 보면서 우아한 기술 블로그가 가장 납득이 갔고 이 글 작성자가 배달의 민족에서 프론트 / 주문 / 결제 시스템 등을 담당해왔고 코덕이란 개인 사이드 프로젝트도 진행 중 이신 개발자 분이기 때문에 신뢰할만하다고 판단했고 해당 게시글 및 발표 영상을 참고하여 정리하면서 다른 래퍼런스의 내용도 추가하면서 이 글을 작성해보겠다.우선 이 글에서 회원 시스템을 예시로 들었는데 아마 MSA라서 MSA의 여러 서비스 중 하나인 회원 시스템을 잡고 설명을 하신 ..

피우다 프로젝트라는 공모전의 본선에 붙게되어 실제 프로젝트에 적용시키기 전에 멀티 모듈을 왜 쓰는 것이 좋은지에 대해 알아보고자 작성하게됐다. 전에 개인적으로 멀티모듈 프로젝트를 구성해봤는데 그때 느낀점을 바탕으로 작성하고자 한다.느낀점을 가독성을 포기하고 줄글로 쭉 풀어 써보고자 한다.모듈(Module)이란?우선 모듈이 뭔지 짚고 넘어가보자. 바로 독립적으로 운영될 수 있는 의미를 가지는 구성요소 단위 왜 멀티 모듈(Multi-Module)을 도입하는지 장점 살펴보기?우선은 왜 사람들이 멀티 모듈 구조를 선택하려고 하는지 장점에 대해 고민해봤다.사실 처음에는 MSA(마이크로 서비스 아키텍처) 처럼 독립적인 배포가 가능한 것도 아니고 더 복잡해지기만 하는 것만 같고 왜 써야하는지 이해가 안갔다. 그래서 ..

파이썬으로 개발하다보니 나는 생성한적도 없던 __pycache__라는 폴더가 각 디렉토리마다 각각 다 생기는 것을 확인할 수 있었다.그래서 이게 뭔가해서 정리하게 됐다.__pycache__ 폴더란?__pycache__ 폴더는 파이썬 인터프리터가 바이트코드를 저장하는 디렉토리다. 파이썬은 스크립트 언어로, 코드를 실행할 때 먼저 소스 코드를 바이트코드로 변환한 후, 이 바이트코드를 실행한다. 이 과정에서 변환된 바이트코드를 매번 새로 생성하는 대신, 변환한 결과를 파일로 저장해 두면 이후 실행 시 시간을 절약할 수 있다. 바로 이 바이트코드 파일이 __pycache__ 폴더에 저장된다.바이트코드 파일의 확장자__pycache__ 폴더 안에는 .pyc 확장자를 가진 파일들이 들어 있다. 이 .pyc 파일이 ..

하나 디지털 파워온에서 'OCR과 머신러닝 기술을 활용한 전세사기 예방 경고 서비스'라는 주제로 최종 프로젝트를 진행하게 됐다. 해당 서비스를 구현하는데에 있어서 머신러닝 모델을 돌리고, 파인튜닝 모델을 처리하며, GPT API와 Clova OCR API를 다루는 데 있어 Python이 Spring Boot(Java)보다 더 유리하다고 판단하여 Flask 서버를 구성하게 되었다. 이전에 https://ai-back-end.tistory.com/84 이 대회에서 플라스크 서버를 구축했을 때는 API가 딱 2개만 나올 것같아서 server.py에 모든 코드를 집어넣고 처리 했었다. 그러나 조금 더 다양한 비즈니스 로직과 데이터베이스 연동 등이 필요했고 하루만에 끝내는 해커톤이 아닌 3개월 간 개발이 필요한 ..

JDBC(Java Database Connectivity)란?JDBC(Java Database Connectivity)는 Java에서 데이터베이스에 접속할 수 있도록 하는 Java 표준 API이다.즉, JDBC API를 통해 자바 코드로 데이터베이스를 연결할 수 있고, SQL 쿼리문을 보내서 쿼리를 실행하며 결과 값을 받아올 수 있다. JDBC는 Java 애플리케이션 내에서 JDBC API를 사용하여 데이터베이스에 접근하는 단순한 구조이다. JDBC를 통한 DB 연동 흐름 1. 드라이버 로딩JDBC 드라이버를 사용하여 Java 애플리케이션이 데이터베이스와 통신할 수 있도록 하는 첫 번째 단계.DriverManager 클래스는 JDBC 드라이버를 관리하는 역할을 한다.그러나 JDBC 4.0부터는 드라이버가..

예외 처리 관련한 블로그를 보다가 Controller에서 응답값 즉, Spring에서 HTTP 통신 시 ResponseBody에 메세지를 설정하는 방식에 두 가지의 처리 방식이 있는 것 같았고 그 두 가지인 @ResponseBody와 ResponseEntity 비교해보고 둘 중 무엇을 선택하는 것이 좋을지 알기 위해 정리해보게 됐다.@ResponseBody (+ Response DTO)@GetMapping("/test")@ResponseBody@ResponseStatus(HttpStatus.OK)public MemberInfoResponseDto responseTest(Long memberId) { ... return memberInfoResponseDto}@ResponseBody는 HTTP ..

Spring Batch에서 데이터를 처리하는 방법에는 Tasklet방식과 Chunk방식이 있다.이 두 가지 비교를 통해 각각 어떤 상황에 쓸 수 있을지 알아 두어야 적절한 데이터 처리 방식을 채택하여 배치 처리를 할 수 있을 것 같아 정리하게 됐다. Tasklet 처리 방식Tasklet은 Spring Batch에서 사용되는 인터페이스로, 배치 작업에서 단일 작업(task)을 수행하기 위한 구성 요소이다.해당 데이터 처리 방식에서 Step은 하나의 Tasklet으로 구성된다.Tasklet을 사용하면 하나의 작업을 간단하게 실행할 수 있으며, 특정 로직을 정의하여 배치 작업 중 반복적으로 실행시킬 수 있다.Tasklet의 execute() 메서드가 호출될 때마다 단일 트랜잭션이 생성되며 Tasklet의 전체..

Spring Boot 3.x 버전이 등장하며 Spring Batch 버전 또한 익히 알려져있는 4버전이 아닌 5버전을 활용하게 되었다. Spring Batch4와 5는 차이가 커서 하나씩 정리해보고자 한다.1. 다양한 JobParameter Type4.x 버전까지는 4개의 Type(Long, Double, String, Date)만을 지원했지만 5부터는 JobParameter를 커스텀해서 사용할 수 있다.원래는 제너릭을 지원하지 않았는데 제너릭 타입을 지원하는 것을 확인할 수있다. 2. Deprecated된 StepBuilderFactory와 JobBuilderFactoryImplicit configuration로 인해 StepBuilderFactory와 JobBuilderFactory가 Deprecat..