분류 전체보기

📚 Mybrary 📚

[Mybrary] ECS/ECR/EC2/VPC/RDS/Route53/ALB: AWS에서 MSA 배포 환경 구성하기

들어가면서 23년 8월 말 경, 드디어 마이브러리가 플레이스토어에 출시되었다. (공개 테스트 버전이지만 ^^..) https://play.google.com/store/apps/details?id=kr.mybrary.mybrary&hl=ko-KR 마이브러리 - Google Play 앱 도서로 사람과 사람을 연결하고, 도서의 가치를 발견하다. play.google.com 현재까지 EC2 인스턴스로 임시 서버를 띄웠지만 이제 정말로 프로덕션 환경에 맞게 배포를 해야 겠다는 생각이 들었다. 3일 정도 바우 팀장님과 머리를 맞대고 배포 환경 구성을 무사히 끝마칠 수 있었다. 어떤 작업들을 하였는지 간략히 포스팅해보고자 한다. 왜 ECS를 사용하였는가 MSA 기반이기 때문에 API Gateway, Config, ..

📚 Mybrary 📚

[Mybrary] Spring REST Docs + Swagger UI: MSA 환경에서 통합된 API 문서 관리하기

들어가면서 API 명세를 자동화해주는 기능으로 대표적으로 Swagger와 REST Docs가 있다. Spring REST Docs 장점 테스트를 통과해야 문서가 만들어진다 -> 신뢰도 향상 프로덕션 코드에 비침투적이다 단점 코드 양이 많다 설정이 어렵다 Swagger 장점 적용이 쉽다 문서에서 바로 API 호출을 수행해볼 수 있다 단점 프로덕션 코드에 침투적이다 테스트와 무관하기 때문에 신뢰도가 떨어질 수 있다 Swagger 어노테이션이 프로덕션 코드에 많이 포함되는 것이 껄끄럽기도 하고 테스트를 강제하는 Rest Docs가 신뢰도 높은 API 명세를 만들 수 있을것 같아 Mybrary 프로젝트에서는 Rest Docs를 사용하기로 결정했다. 또한 Swagger의 API 호출 용이성을 Intellij의 H..

AWS

[AWS(Amazon Web Service) 입문자를 위한 강의] Code Commit & Code Deploy & Code Pipeline

CI/CD CI: Continuous Integration (지속적인 통합) CD: Continuous Deployment (지속적인 배포) CI/CD의 장점 자동화 시스템(Automation) 반복적인 부분(ex. 테스트)들을 자동화, 빠른 소프트웨어 개발 가능 Incremental Change 기능 추가/수정을 위해 작은 task를 진행 - 점차 코드를 수정 중앙 리포지토리 코드를 보관하고 수많은 개발자들에게 공유되는 저장소 ex) Github Local & Master branch 로컬 -> 마스터 브랜치로 병합 배포 준비: 패키지 생성 등 준비 작업 - CI/CD로 자동화 가능 예시 시나리오 개발자들이 서로 다른 기능 구현 후 테스트 한 다음 메인 리포지토리에 기능 추가 배포 준비 -> 배포: 사..

Spring

[10분 테코톡] 스프링 이벤트(Spring Event): 이벤트를 통해 의존성 개선하기

우아한테크코스 [10분 테코톡] 말랑의 스프링 이벤트를 참고해 작성했습니다. 요구 사항 회원가입을 하면 쿠폰을 제공한다 구현 결과 멤버 서비스 signUp(MemberInfo): Member 영속화 후 쿠폰 서비스의 give를 호출해 멤버에게 쿠폰 제공 쿠폰 서비스 give(Member): Member가 포함된 생성자를 통해 Coupon 생성 후 영속화 문제 발생 멤버 서비스가 쿠폰 서비스를 직접 호출 (멤버->쿠폰 의존성) 쿠폰 서비스가 멤버 객체를 포함 (쿠폰->멤버 의존성) ➡️ 의존성 사이클 발생 해결 방법 인터페이스를 통한 의존성 역전 허브 부르기 이벤트 이벤트로 해결하기 멤버 서비스에서 쿠폰 서비스를 직접 호출하지 않고 회원 가입 했다는 이벤트 발행 해당 이벤트를 받으면 쿠폰이 발생 로직 처리..

Spring

[Practical Testing: 실용적인 테스트 가이드] Spring & JPA 기반 테스트 - Business Layer 테스트

Persistence Layer vs Business Layer Persistence Layer Data Access의 역할 비즈니스 가공 로직이 포함되어서는 안됨 Data에 대한 CRUD에만 집중한 레이어 Business Layer 비즈니스 로직을 구현하는 역할 Persistence Layer화의 상호작용(Data를 읽고 쓰는 행위)을 통해 비즈니스 로직을 전개시킴 트랜잭션을 보장해야 함 요구사항 상품 번호 리스트를 받아 주문 생성하기 주문은 주문 상태, 주문 등록 시간을 가진다 주문의 총 금액을 계산할 수 있어야 한다 TDD로 OrderService 테스트하기 1. RED OrderService 클래스 생성 @Service public class OrderService { public OrderRes..

Spring

[Practical Testing: 실용적인 테스트 가이드] Spring & JPA 기반 테스트 - Persistence Layer 테스트

레이어드 아키텍처와 테스트 왜 레이어를 분리하는가? 관심사의 분리 사용자의 요청이 왔을 때 각 레이어별로 역할을 주자 책임을 나누어서 유지보수 하기 용이하게 구성하자 객체들의 협력에 따라 단위 테스트만으로 커버하기 어려운 상황이 발생? 통합 테스트 여러 모듈이 협력하는 기능을 통합적으로 검증하는 테스트 일반적으로 작은 범위의 단위 테스트만으로는 기능 전체의 신뢰성을 보장할 수 없음 풍부한 단위 테스트 & 큰 기능 단위를 검증하는 통합 테스트 권장 Spring/JPA 훑어보기 라이브러리 vs 프레임워크 라이브러리 사용: 내 코드가 주체가 되며, 필요한 기능을 외부(라이브러리)에서 가져옴 프레임워크 사용: 이미 갖춰진(동작할 수 있는) 환경들이 구성되어 있고 내 코드가 수동적으로 프레임 내에서 동작함 Spr..

se-mumu
'분류 전체보기' 카테고리의 글 목록 (3 Page)