본문 바로가기

Develop/WEB

(10)
깃허브에 중요 정보 가리고 올리기 (.env 활용) 1.사용 계기보통 로컬에서만 서버를 돌리는 경우에는 단순히 .gitignore에 application.yml과 같은 파일들을 넣어서깃허브에 올리지 않고 개인 정보를 보호할 수 있다. 하지만 이번에 AWS를 통해 배포하게 되면서 github에 application.yml 파일도 같이 업로드 해야해서중요 정보를 가리는 방법을 알아보게 되었다.2. 주의 사항.gitignore와 .env를 최상위 프로젝트 아래 파일로 만들어 주어야 하는데둘을 동시에 생성한 다음에 커밋-푸쉬를 하면 .env를 깃이 먼저 추적하게 된다따라서 .gitignore에 먼저 .env를 추가하고 난 후에 푸쉬를 해야 한다.  3. 설정 방법igitignore파일을 통해 .env 파일을 더이상 깃이 추적하지 못하도록 했다면.env 안에 중요..
Cloud Native & Microservices Cloud Naive Architecture*확장 가능한 아키텍처- 시스템의 수평적 확정에 유연- 확장된 서버로 시스템의 부하 분산, 가용성 보장- 시스템 또는 서비스 애플리케이션 단위의 패키지- 모니터링 *탄력적 아키텍처- 서비스 생성 - 통합 - 배포, 비즈니스 환경 변화에 대응 시간 단축- 분활 된 서비스 구조- 무상태 통신 프로토콜 > 종속을 최소화 해야함- 서비스의 추가와 삭제 자동으로 감지- 변경된 서비스 요청에 따라 사용자 요청 처리(동적 처리) *장애 격리- 특정 서비스에 오류가 발생해도 다른 서비스에 영향을 주지 않음 Cloud Native Application*Microservices, CI/CD, DevOps, Containers **CI/CD- 지속적인 통합( 결과물을 통합하기 위한..
DDD(Domain Driven Design) - 도메인 주도 설계 🔴DDD(Domain Driven Design)비즈니스 Domain별로 나누어 설계실제 개발할 때, 현업과 IT의 쌍방향 커뮤니케이션이 아주 중요!!!하다 이 디자인 역시 응집도를 높이고 결합도를 낮추는 것이 중요 🟣strategic designBusiness Domain의 상황에 맞계 설계하자!!(마치 마케팅에서 타겟 계층에 따라 마케팅 전략이 달라지는 것과 같다)> 비즈니스 목적별로 서비스들을 그룹핑 🟣Tatical Design개발을 위한 구체적인 설계도Strategic Design에서 설계한 각 서브 도메인 별 도메인 모델을 중심으로 설계하는 것- Layered Architecturehttps://happycloud-lee.tistory.com/94 DDD 핵심만 빠르게 이해하기마이크로서비스의..
클린 아키텍쳐(Clean Architecture) 🔴클린 아키텍쳐기존의 계층형 아키텍쳐가 가지던 의존성에서 벗어나도록 하는 설계경계가 핵심 포인트!!!!! 소프트웨어 아키텍처는 선을 긋는 기술이며, 나는 이러한 선을 경계(boundary)라고 부른다.경계는 소프트웨어 요소를 서로 분리하고, 경계 한편에 있는 요소가 반대편에 있는 요소을 알지 못하도록 막는다. - Robert C. Martin, Clean Architecture 위 그래프의 화살표 방향은 의존성을 뜻한다클린 아키텍쳐의 의존성은 밖에서 안으로 향하고, 바깥 원은 안쪽 원에 영향을 미치지 X경계의 바깥으로 갈수록 덜 중요하고 세부적인 영역임안으로 갈수록 고수준🔵엔티티(Entities)핵심 업무 규칙을 캡슐화메서드를 가지는 객체, 일련의 데이터 구조와 함수의 집합외부의 영향을 가장 받지 않..
레이어드 아키텍쳐(Layered Architecture) 🔴레이어드 아키텍쳐(Layered Architecture)소프트웨어를 여러 개의 계층으로 분리해서 설계(Presentation Layer - Business Layer / Application Layer - Persistence Layer / Data Access Layer - Database Layer) ❓그럼 왜 분리해서 설계할까?> 하나의 계층에 여러개의 기능이 있으면 해당 계층의 응집도가 떨어지고 결합도가 높아짐   응집도를 높이고 결합도를 낮추기 위해서 >> 재사용성과 유지보수성을 높일 수 있음  🟢Presentation Layer이름에서 알 수 있듯이 보여주는 계층, 한마디로 인터페이스와 애플리케이션이 연결되는 곳사용자 인터페이스(UI)를 담당하며, 사용자의 입력값을 검증하고 비즈니스 로직..
HTTP 메서드(2) / 상태코드 🔴클라이언트에서 서버로 데이터 전송데이터 전달 방식은 2가지1. 쿼리 파라미터를 통한 데이터 전송 : GET2. 메시지 바디를 통한 데이터 전송 : POST, PUT PATCH> Content-Type을 form 사용 : form내용을 메시지 바디를 통해서 전송(key=value,쿼리 파라미터 형식과 비슷하게)   전송 데이터를 url encoding 처리 HTTP API 데이터 전송서버 to 서버(백엔드 시스템 통신) / 앱 클라이언트웹 클라이언트 > 자바 스크립트를  통한 통신에 사용 (AJAX)Content-Type을 json 사용 URI 설계 개념1. 문서 : 단일 개념(파일 하나, 객체 인스턴스, 데이터베이스 2. 컬렉션 : 서버가 관리하는 리소스 디렉터리, 서버가 리소스의 URI를 생성하고 ..
HTTP 메세지 & 메서드 요청 메세지 종류 : GET, POST, PUT, DELETEGET : 리소스 조회POST : 요청 내역 조회응답 메세지 HTTP 상태 코드 : 요청 성공, 실패를 나타냄200 성공400 클라이언트 요청 오류500 서버 내부 오류이유 문구 : 사람이 이해할 수 있는 문구  OWS 띄어쓰기 허용 HTTP 헤더용도 : HTTP 전송에 필요한 모든 부가정보 예) 메세지 바디의 내용, 크기, 압축 인증, 클라이언트 정보 등등 HTTP바디실제 전송할 데이터HTML 문서,이미지,JSON 등등 byte로 표현할 수 있는 모든 것🔴HTTP 메서드리소스 : 핵심 개념 자체가 리소스 핵심 개념 자체만 식별하면 됨 > 리소스를 URI에 매핑GET : 리소스 조회POST : 요청 데이터 처리, 주로 등록에 사용PUT : 리..
HTTP 기본 특징 HTTP : Server / Client 구조 분리하는게 중요한 이유? 각각 독립적 진화 가능복잡한 비즈니스 로직, 아키텍쳐, 대용량 트래픽 기술은 백엔드(서버)에서만 집중하면 됨uiux는 클라이언트에서 집중무상태 프로토콜(Stateless) 서버가 클라이언트의 상태를 보존하지 않음 > 상태를 보관하지 않기 때문에 그냥 정보만 요청으로 보내면 서버에서 응답무한한 서버 증설 가능> 갑자기 클라이언트 요청이 증가해도 서버를 대거 투입 가능! 한계 : 상태를 유지 해야하는 경우( 로그인 ) 이와 같은 경우에는 상태 유지는 최소한만 사용          데이터를 너무 많이 보냄.비연결성(Connectionless) 연결을 유지하는 동안 서버에 자원이 계속 소모 > 필요한 것만 주고 받은 후 연결 끊을 수 있게끔..