분류 전체보기 134

[MSA] e-commerce API; 프로젝트 흐름

[MSA] e-commerce API; 프로젝트 흐름[MSA] e-commerce API; 구현1 - 설정(config-server, eureka-server, gateway)[MSA] e-commerce API; 구현2 - customer, product, payment, order, notification프로젝트 흐름전체적인 흐름은 아래와 같으며 하나씩 분해해보겠습니다.1. Eureka(Discovery) Server, Config Server, GatewaySpring Cloud의 기초적인 형태입니다.Eureka Server에 모든 서비스를 등록합니다.각 서비스는 Config Server에서 중앙 집중식으로 구성 관리합니다.외부 요청은 Gateway가 리디렉션합니다.2. 인터넷 → 게이트웨이 → (..

Java 2024.06.18

[HTTP Client] 예제; HttpURLConnection, Apache HttpClient, RestTemplate, OpenFeign, WebClient, RestClient

[HTTP Client] 예제 HttpURLConnection, Apache HttpClient, RestTemplate, OpenFeign, WebClient, RestClient Spring Cloud를 활용한 Http Client 예제를 이어서 작성하겠습니다.student-service와 school-service에 공통적으로 적용할 yml 파일을 config-server에 작성합니다.spring: datasource: driver-class-name: org.postgresql.Driver url: jdbc:postgresql://localhost:5432/students username: ride password: password jpa: hibernate: ..

Java 2024.06.14

[HTTP Client] 개요; HttpURLConnection, Apache HttpClient, RestTemplate, OpenFeign, WebClient, RestClient

[HTTP Client] 개요HttpURLConnection, Apache HttpClient, RestTemplate, OpenFeign, WebClient, RestClient0. HTTP ClientHTTP Client는 서버와 HTTP 통신을 담당하는 라이브러리 또는 도구를 의미합니다.이를 통해 웹 애플리케이션에서 데이터를 조회 할 수 있습니다.(MSA에서)다른 서버와 통합 작업을 가능하게 하고,(공공데이터와 같은)외부 API와 데이터를 주고 받을 수 있습니다.0.1 Spring Boot의 HTTP ClientSpring Boot는 다양한 HTTP Client를 사용할 수 있습니다.HttpURLConnection, Apache HttpClient, RestTemplate, Feign, WebCli..

Java 2024.06.14

[TDD] Test Driven Development

TDD란?TDD는 테스트 주도 개발을 의미합니다.개발자가 특정 기능에 대한 테스트를 작성한 다음,그 테스트를 통과하기 위한 최소한의 코드를 작성하고,리팩토링하는 과정으로 진행됩니다.과정 Red -> Green -> Refactor각 과정을 Red, Green, Refactor 라고 합니다.Red특정 기능에 해당하는 테스트를 작성합니다.(구현되지 않았기 때문에 실패합니다)Green테스트를 통과하기 위한 최소한의 코드를 작성합니다.(효율보다 통과를 우선시합니다)Refactor테스트가 통과하는 것을 확인하면서 코드를 리팩토링합니다.데모 프로젝트docker container 프로젝트 TDD용 프로젝트를 생성하겠습니다.ControllerTest 클래스를 생성합니다. @SpringBootTest 를 사용하지 않고 ..

Java 2024.05.23

[Spring AOP] 스프링 관점 지향 프로그래밍(Spring Aspect Oriented Programming)

짧막한 요약애플리케이션을 웹, 비즈니스, 데이터 등 여러 계층으로 나눌 수 있습니다.각 계층이 담당하고 있는 책임이 다르지만, 보안이나 로깅은 모든 계층에서 필요합니다.공통의 관심사를 구현하고,원하는 계층 별로 적용하는 것을 관점 지향 프로그래밍이라고 합니다.Spring AOP는 관점 지향 프로그래밍 프레임 워크 중 하나입니다.관점 지향 프로그래밍(AOP)?애플리케이션은 대부분 웹 계층, 비즈니스 계칭, 데이터 계층 등 계층적 접근을 적용합니다.(애플리케이션에 따라 층이 더 세분화 되거나 추가 되기도 합니다)웹 계층 - 뷰 로직, 컨트롤러, REST API의 JSON 변환비즈니스 계층 - 비즈니스 로직데이터 계층 - MySQL, MariaDB 등의 영속성(Persistence) 로직Cross Cuttin..

Java 2024.05.23

[Git & GitHub 13] Workflow - fork

Fork을 통해 다른 사람의 Repository를 자신의 GitHub 계정에 복사할 수 있습니다.(commit history와 파일 모두)이렇게 복사된 Repository를 원본 저장소의 fork라고 합니다.private repository라도, 접근 권한이 있으면 fork할 수 있습니다.1. Repository - Fork - Create a new fork2. Repository 이름 설정fork한 repository는 출처가 표기됩니다.fork된 repository에 push하면,원본이 아닌 사용자의 repository로 push됩니다.원본 프로젝트에 다이렉트로 push하지 못하더라도 pull은 가능합니다. 오픈소스 프로젝트나 팀 프로젝트에서 fork를 여러 개 두어 작업할 수 있습니다.작업을 완료..

SCM/Git 2024.05.19

[Git & GitHub 13] Workflow - 브랜치 보호규칙(branch protection rules)

1. GitHub Repository 설정 페이지 들어가서 브랜치 보호 규칙 추가하기 2. 브랜치 이름 패턴을 설정하기/feature, /release 등으로 설정하여 특정 패턴을 가진 브랜치에 규칙을 적용할 수 있습니다.Require a pull request before mergingmerge하기 전에 PR하도록 강제하기Require approvals승인 최소 인원수 설정Dismiss stale pull request approvals when new commits are pushed새 커밋이 push될 때, 과거 PR 승인을 무효화Require review from Code Owners코드 소유자도 리뷰하도록Require approval of the most recent reviewable push..

SCM/Git 2024.05.19

[Git & GitHub 12] Workflow - 기능 브랜치(feature branches), pull requests(PR)

일반적인 workflow는 main 브랜치에서 작업을 하지 않고,개별적인 브랜치를 생성하여 작업합니다. 다른 사람의 코드가 미완성일지라도 commit 했다면,코드를 확인할 수 있습니다.물론, main 브랜치는 안정적으로 구동중입니다.기능이 완성되어 안정적으로 동작하면, main 브랜치에 merge합니다.main 브랜치의 코드는 무결성을 지향합니다.특정 기능 브랜치에서 기능에 대한 개발을 완료-병합 후 브랜치를 삭제합니다.새로운 기능을 개발하기 시작하면 새로운 기능에 대한 브랜치를 생성하여 작업합니다. main 브랜치에 Merge할 때 PR을 활용하여 TEST, 코드 리뷰, 논의 과정을 거칩니다.프로젝트 구성원들이 독자적인 판단에 의해 main branch로 merge한다면,개인의 실수가 main bran..

SCM/Git 2024.05.18

[Git & GitHub 11] Workflow 필요성 - 단일(main, master)브랜치만 사용 시

협업 워크플로우는 여러 가지가 존재합니다.GitHub를 처음 협업했을때, 단일 브랜치(main)만으로 진행한다고 가정해보겠습니다.코드를 수정(commit)할 때마다pull-push-충돌-해결 과정을 거칩니다.push 전까지 타인의 코드를 확인할 수 없습니다. 단일 브랜치로 협업하기엔 많은 자원이 소모됩니다.1.프로젝트 구성원들이 각자의 local에서 작업합니다.2. KIM이 git push 로 변경사항을 main branch에 적용합니다.3. LEE가 변경사항을 적용하기 위해 git push합니다.local에서 추적한 포인터와 remote의 포인터가 달라서 오류가 발생합니다.(pull이나 fetch로 동기화를 해야합니다)4. LEE가 git pull로 원격지의 변경사항을 받고 업데이트 합니다.충돌을 해결..

SCM/Git 2024.05.18

[Git & GitHub 10] git fetch, git pull(git fetch + git merge)

git fetch, git pull 두 명령어 모두 remote의 변경사항을 local로 가져옵니다.git fetch []git fetch origingit fetch 명령어를 사용하여 원격 저장소에서 변경사항을 가져옵니다.(사용자의 작업과 통합되지 않습니다)브랜치 이름을 매개변수로 넣어 특정 브랜치만 fetch하도록 할 수 있습니다.git fetch origin branch1git fetch 명령어를 사용하여 remote branch를 local에 생성할 수 있습니다.git fetchgit pull (main)$ git pull origin maingit pull 명령어를 사용하여 원격 저장소에서 변경사항을 가져오고, HEAD 브랜치를 업데이트합니다.사용자의 워킹 디렉토리를 업데이트합니다.(사용자의..

SCM/Git 2024.05.17
728x90
반응형