https://anythingis.tistory.com/74 2022년 25살 회고대학교도 졸업하기도 하고 최근에 블로그를 하기 시작하면서 22년도 끝나가는데 올해를 회고해보려고 한다. 개발 📋Node.js CRUD 게시판 전공자이긴 하지만 학점을 위한 공부만 하고 수업실습도anythingis.tistory.com22년 회고 이후 오랜만에 써봅니다. 자바와 스프링을 이제 막 접했던 2년전과 지금 큰 차이는 없는 것 같지만 ... 나중에 보고 얼마나 성장했는가를 위해 작성해봅니다. 싸피 수료1학기의 주요 프로젝트인 2인 1조 프로젝트에서 전 백엔드 개발자를 지망했는데 운좋게 프론트엔드 지망하시는 분과 조가 되었습니다. 이전까진 백엔드를 혼자 맡게되면 ERD 설계는 어떻게 하지 하는 고민이 있었는데 기본 ..
트랜잭션?https://anythingis.tistory.com/171 [DB] 트랜잭션, 애플리케이션의 트랜잭션 제어트랜잭션이란 데이터를 저장할 때 단순히 파일에 저장해도 되지만, 데이터베이스에 저장하는 가장 큰 이유입니다. 트랜잭션은 그대로 번역하면 거래인데, 데이터베이스에선 하나의 거래를 안anythingis.tistory.com주로 DB에서 활용되는 개념이지만, 애플리케이션에서 데이터를 다루고 DB에 저장하기에, DB에서 커밋이 되거나 롤백 된 후 비즈니스 로직까지 연계된 로직을 처리하기 위해 스프링도 트랜잭션 기능을 제공합니다. 스프링 트랜잭션스프링은 다양한 DB 접근 기술과 같이 활용할 수 있습니다.JDBCpublic void accountTransfer(String fromId, String..
AWS 클라우드 서버에서 백엔드와 프론트엔드를 배포중이고, 젠킨스까지 하나의 서버에서 진행하려고 합니다. Nginx 활용한 리버스 프록시, SSL 적용https://anythingis.tistory.com/175 프록시 서버, Nginx 설정(리버스 프록시, SSL)(Ubuntu 24.03ver)프록시 서버 왜 쓸까?기본 웹 서비스 통신의 방식입니다.www.naver.com을 치면 이런 화면을 받아오는 것과 같습니다. 이후 로그인을 하는 등 비즈니스 로직과 관련된 부분을 동작하면 백엔드에anythingis.tistory.com 직접적인 포트노출을 줄이고 HTTPS 적용을 위해 Nginx를 활용해 리버스 프록시 서버로 활용중이고 젠킨스를 추가 설정합니다. 활용중인 Nginx Confserver { ..
Trace Id, Span Id 하나의 요청에서 여러 마이크로 서비스의 참조가 필요할 때 전체적으로 동일한 trace Id를 사용하고, 서비스마다 다른 sapn Id를 사용합니다. 이를 통해 문제가 있는 trace Id 요청을 트레이싱해서 문제가 있는 서비스를 찾을 수 있습니다. MicrometerSpringBoot 2에서는 spring cloud sleuth를 통해 spring boot에서 zipkin으로 span id, trace id 전송해 분산 추적을 진행했는데 이와 같이 순환참조가 일어나는 구조와 Spring과 SpringBoot에서는 트레이싱 기능일 지원하지 않는 구조로 인해 SpringBoot 3에서는 Sleuth의 트레이싱 기능이 Micrometer로 이관되었습니다. https://tec..
CircuitBreaker는 왜 필요한가?도메인 별로 서비스(서버)가 나뉘어지는 MSA 아키텍처에서는 특정 유저의 주문 리스트를 조회하는 경우에 다음과 같은 순서로 이루어 집니다. 1. user-service 호출 user-service / controller @GetMapping("/users/{userId}") public ResponseEntity getUser(@PathVariable String userId){ UserDto userDto = userService.getUserByUserId(userId); return ResponseEntity.status(HttpStatus.OK) .body(new ModelMapper().map(us..
개요https://anythingis.tistory.com/193 [MSA] Apache Kafka & Kafka ConnectKafkaKafka 개요현재 하나의 서비스는 다양한 서비스와 연동됩니다. 이때 end-to-end 방식으로 연결되어 있으면 속도상 빠르다는 장점이 있을 수 있지만 아래와 같은 단점이 있습니다. 데이터 연동의anythingis.tistory.com이전 포스팅에서 Zookeeper, Kafka, Kafka Connect를 활용해봤습니다. 그중에서도 단일 DB를 활용하고, 서비스가 DB에 INSERT를 직접 하는게 아닌 카프카에 위임하는 방법을 알아보겠습니다. 장점 : 서비스가 DB Lock, Connection에 대해 자유로움, 동시성 처리를 Kafka가, 비즈니스 로직을 서비스..
KafkaKafka 개요현재 하나의 서비스는 다양한 서비스와 연동됩니다. 이때 end-to-end 방식으로 연결되어 있으면 속도상 빠르다는 장점이 있을 수 있지만 아래와 같은 단점이 있습니다. 데이터 연동의 복잡성이 증가해 하드웨어, 운영체제에 영향을 많이 받고 장애에 영향을 많이 받음서로 다른 데이터 파이프 라인으로 인한 확장에 어려움이를 해결하고자 중간단계의 추상화를 위해 Apache Kafka가 등장했고, Data를 생성하는 Producer, Data를 소비하는 Cosumer를 통해 end-to-end는 서로 모르지만, 유연한 데이터 파이프라인을 구축할 수 있습니다. kafka 구성kafka Broker실제로 실행되는 Kafka 애플리케이션 서버로 3대 이상의 Broker Cluster를 구성해 브..