Back End
-
[리팩토링 보고서] 레이어간 의존성 개선Back End/리팩토링 보고서 2022. 3. 4. 16:56
리팩토링 진행시 계속 업데이트 되는 포스팅입니다. > 레이어간 의존성 감소의 필요성 PocketMark v0.1 레이어 아키텍처 문제점 1(R). API 스펙변경시 엔티티 스펙도 변경해야한다. 엔티티 스펙변경시 API 스펙도 변경해야한다. (API-Entity 의존관계가 있다.) 2(P). API 스펙 확장성을 저해시킨다. 리팩토링 방향 1(R). 데이터 전송만을 담당하는 객체를 만들어 API-DTO, DTO-Entity 로 의존관계를 분리한다. 2.(P). Response 객체를 만들어 멤버변수로 컬렉션을 사용할 수 있게 끔 한다. PocketMark v0.2 레이어 아키텍처 문제점 컨트롤러 단에서 DTO 변경로직이 있다면 서비스 단까지 전파된다. 리팩토링 방향 컨트롤러와 서비스레이어 간 DTO를 새로..
-
[개발노트] PocketMark 개발노트Back End/리팩토링 보고서 2022. 3. 3. 22:50
PocketMark 개발노트 1. 의존관계 줄이기 1-1) 레이어간 의존관계 개선 1-2) 일급컬렉션 적용 1-3) API와 Repository 간 의존성 제거 (DTO->Repository 의존성 제거) 2. 상속을 이용하여 재사용성 높이기 2-1) MappedSuperClass 2-2) @Inheritance (도메인 정규화, @OneToMany -> @OneToOne) 2-3) Spring Data Interface-Based DTO Projection (+불변성) 3. 쿼리성능 최적화 4-1) Query RULE 4-2) OneToMany 에서 fetchJoin(BatchSize) VS 같은로직 직접구현 4-3) Spring Data JPA Repository 반환형 Slice VS Page 4-..
-
[CI/CD] Travis CI Job LifeCycle 공식문서와 after_script에 대하여Back End/CI&CD 2022. 2. 26. 01:11
The Build # The .travis.yml file describes the build process. A build in Travis CI is a sequence of stages. Each stage consists of jobs run in parallel. .travis.yml 파일은 빌드 프로세스를 조정하는 파일이다. 트래비스 CI에서 빌드는 stage의 묶음이며, 각 stage는 병렬적으로 실행되는 job들로 이루어져있다. (각 stage가 개별 VM 환경에서 돌아간다는 뜻) 개별 VM에서 병렬적으로 돌아가지 않고, 순차적으로 돌리는 방법도 있긴 하다. The Job Lifecycle # Each job is a sequence of phases. The main phases are:..
-
[Spring/Network] 서블릿과 WAS에 대하여Back End/Spring Boot 2022. 2. 25. 13:32
어떤분께서 "서블릿이 뭔지아세요?" 라고 물어보신적이 있다. 나는 "request랑 response에 접근하게 해주는 객체아니에요?" 라고 답을 했다.. (Spring에서 HttpServlet 객체로 request랑 response랑 접근해서 로직을 짠적이 있으니까...) 그런데 면접 때 이런 질문이 나온다면 이런 대답만으로는 부족할 것 같아 더 알아보기로 했다. (어떤 회사에서는 서블릿을 구현하는 입사과제가 있었다고 한다 ㄷㄷㄷ..) 아마 이 포스팅을 읽다보면 WAS(톰캣)가 계속 등장하게 될텐데, 선수지식은 아래 포스팅을 읽으시면 된다. [Network] Apachi, Nginx, Tomcat 이 하는일이 뭘까? (Feat. Proxy) # 대충 개념 잡기 Apachi, NginX 은 프록시서버(웹서..
-
[AWS] CDN 이란?Back End/AWS 2022. 2. 24. 00:35
# CDN 콘텐츠 전송 네트워크(Content Delivery Network) 지리적 제약 없이 전 세계 사용자에게 빠르게 캐싱된 콘텐츠를 전송하는 기술 서버와 사용자 사이의 물리적인 거리를 줄여 콘텐츠 로딩에 소요되는 시간을 최소화 # 원리 프록시 서버에서 출발한 웹 캐시의 클라우드화. 전세계 각지에 캐시 서버를 엄청 많이 설치한다. 그리고 한국에 있는 사용자가 접속하면 한국 캐시 서버가 정보를 보낸다. 프랑스에 있는 사용자가 접속하면 프랑스 캐시 서버에서 정보를 보낸다. 이런 식으로 CDN 자체가 알아서 사용자와 가장 가까운 캐시 서버에서 정보를 찾아 보내는 것. 출처 : https://namu.wiki/w/CDN # AWS CloudFront 작동 개요 요약하자면, AWS CloudFront 는 C..
-
[CI/CD] Travis CI 적용기 (Organization Repository)Back End/CI&CD 2022. 2. 24. 00:24
개인 레파지토리 적용은 Travis CI 라는 키워드로 검색하면 쉽게 찾아 볼 수 있다. 허나...! Organization Repository 는 찾아 볼 수가 없다...... 혹여나 저와 같은 증상으로 해메셨다면 잘 찾아오셨습니다 :D!! 레파지토리와 Travis CI를 연결하고 커밋을 했는데 We are unable to start your build at this time. You exceeded the number of users allowed for your plan. Please review your plan details and follow the steps to resolution. 이라는 문구가 뜬다. 너무 불친절하다....! 요금제 초과라고만 말만 하고 해결법은 제시해주지 않는다.....
-
[AWS] 7. CloudFront로 HTTPS (SSL) 설정하기 & ACM 에서 인증서 만들기Back End/AWS 2022. 2. 18. 22:29
.................. 현타오는 중................... # 순서 ACM 에서 인증서 발급 -> CloudFront에 ACM 연결 -> Route53에서 원하는 도메인과 CloudFront 연결 # 준비물 구입한 도메인과 구입한도메인사이트에서 해당도메인의 네임서버에 aws 네임서버 4개를 등록한 상태 # ACM 인증서 만들기 콘솔에서 ACM 이라 검색하고 AWS Certificate Manager 에 들어가서 인증서 요청을 누르자 1. 퍼블릭 인증서 요청 * 만드실 때 지역을 [버지니아 북부]로 변경하고 만드셔야 합니다. 안그러면 무한 [검증 대기중]에 빠지실 수 있습니다. 2. Route 53에 레코드 추가 * 빨간색 네모를 누르면 자동생성이 되긴하는데, 개념을 알려드리기 위해 ..
-
[AWS] 6. React 를 EC2에서 S3에 담아 CloudFront에 태우기Back End/AWS 2022. 2. 18. 12:36
# S3 버킷만들기 해당 내용은 구글링 하시면 됩니다 ☆ (아!! 권한설정이 복잡하다 싶으시면 만드실 때 액세스 퍼블릭으로 주셔요..!) * 필자는 pocketmark-deploy 라는 이름을 가진 s3버킷을 사용할 예정 # 사용자 추가하기 (IAM 설정하기) 1. IAM 서비스로 접속 2. 사용자 -> 사용자추가 * 기존정책 직접연결로 S3FullAccess 검색 후 추가 * 사용자 추가 후, csv 다운로드 받아 보관하기 (액세스 키 ID 와 비밀 액세스키가 들어있음) # CLI 설정하기 1. EC2에 접속 후, 해당 커멘드 입력 aws configure --profile 등록한IAM사용자이름 # 커멘드를 실행하면 나오는 입력창 AWS Access Key ID [None]: csv 파일에 있는 액세스..