전체 글 53

AWS의 Well Architected 마인드맵

AWS Well-Architected and the Six Pillars Operational Excellence Pillar - 운영 우수성 원칙 Security Pillar - 보안 원칙 Reliability Pillar - 안정성 원칙 Performance Efficiency Pillar - 성능 효율성 원칙 Cost Optimization Pillar - 비용 최적화 원칙 Sustainability Pillar - 지속 가능성 원칙 https://aws.amazon.com/ko/architecture/well-architected/?wa-lens-whitepapers.sort-by=item.additionalFields.sortDate&wa-lens-whitepapers.sort-order=des..

Cloud&Infra 2023.06.23

AWS ECS Fargate Port mapping

VPC: public subnet + private subnet NAT Gateway: public subnet ALB: public subnet ECS: private subnet USER --(Target Group listen port)--> ALB --(Target Group forwarding port) --> Target Group --(host port)--> ECS Cluster --(container port)--> Fargate(Container) vpcnet을 쓰는 경우에는 host port와 container port가 무조건 같아야한다. 그러므로 일반적으로 Target Group listen port 443, 80으로 지정하고 Target Group forwarding port를 ..

Cloud&Infra 2023.05.18

Toy Project - Overview

1. 배달의 민족을 본 뜬 배달 시스템 Backend 개발 2. 큼지막한 기술적 요구사항 - 배달의 민족에서 지원하는 서비스 지원 - Frontend는 구성하지 않거나 최소한으로 구성 - AWS 사용 및 Multi Region 지원 - 가게 정보 및 검색에 Elasticsearch 사용 - 사용자 정보 MongoDB 사용 - Data 수정사항 등 Kafka 사용 - Kubernetes/Docker 및 Github actions로 CI/CD와 Scalablity 구현 - Spring API Gateway 사용으로 url 단일화 - Airflow 이용하여 하루 단위 로깅 분석 - Spring Security 이용한 인증 서비스 구현 - Backend API는 Spring Webflux로 구현 - promet..

Spring의 Inversion of Control (IoC) 과 Dependency Injection (DI)

1. Inversion of Control 제어의 주체가 사용자에서 Framework로 바뀌는 것이다. 스프링에서는 빈의 생성과 관계 설정 같은 제어를 담당하는 IoC 오브젝트를 '빈 팩토리' (Spring에 의하여 생성되고 관리되는 자바 객체를 Bean) 이를 좀 더 확장한 개념을 '애플리케이션 컨텍스트'라고 부른다. 빈팩토리 : 빈을 생성하고 관계를 설정하는 IoC의 기본 기능 애플리케이션 컨텍스트 : 애플리케이션 전반에 걸쳐 모든 제어 작업을 담당하는 IoC 엔진 아래 방법들을 이용해 IoC를 구현한다. Service Locator Pattern Dependency Injection contextualized lookup template method design pattern strategy des..

Spring Data JPA와 Hibernate. 그리고 Persistence

1. Spring Data JPA, JPA, Hibernate와 JDBC JPA (JAVA Persistence API): 자바에서 ORM에 대한 API 표준 명세(Interface)(ORM: Object Relational Mapping, OOP 언어에서 관계형 데이터베이스를 사용하는 방식)예를 들면 SELECT * FROM user; -> user.findAll()Interface만 정의한 부분이기때문에 실제 구현부는 HIbernate 등 여러가지 중 선택할 수 있다.일반적으로 HIbernate를 사용. Hibernate: JPA의 구현체. JPA에서 사용되는 EntityManager, EntityManagerFactory와 EntityTransaction 등을 JDBC 기반으로 구현.실제 구현 부분..

데이터베이스 정규화 - 제1, 제2, 제3정규형과 BCNF (RDB, Database Normalization)

용어 정리.슈퍼 키(Super Key): 행을 고유하게 식별할 수 있는 속성 또는 속성의 집합후보 키(Candidate Key): 슈퍼 키 중 더 이상 줄일 수 없는(irreducible) 형태를 가진 것기본 키(Primary Key): 설계자에 의해 선택, 정의된 후보 키 함수 종속성 (Functional Dependency): X 값에 의해서 Y의 값이 결정되는 경우 ( y = f(x) ) 완전 함수 종속(Full Functional Dependency): 후보 키를 제외한 모든 속성이 후보 키의 전체 집합에 종속되어야 한다.(= 기본 키의 부분 집합에 종속되어서는 안된다.)주문id아이템id할인가110100210801550(예를 들어, PK가 (주문id+아이템id) 인 경우 할인가는 2가지를 모두 알..

Data 2022.11.03

Airflow 정리 execution_date, data_interval_start, logical_date, start_date

airflow 사용 자체는 어렵지 않다. 용어나 date 처리 등에 대해서만 정리한다. start_date: DAG가 시작되는 기준 시점. 해당 시점을 기준으로 interval적용 execution_date: Task가 실행되는 시점이 아닌 Time Window의 시작 지점. schedule_interval: data처리 간격. cron 또는 date형식 (Timetable 형식이 도입되었다. https://airflow.apache.org/docs/apache-airflow/stable/concepts/timetable.html) 예를 들어, interval이 하루인 경우, execution_date = 2022-01-01 0시 인 작업은 2022-01-02 0시에 시작한다. 이러한 개념이 혼란을 주기..

Data 2022.11.03

DIP (The Dependency Inversion Principle)

OOP의 핵심 개념 중 하나인 SOLID 중 D에 해당하는 원칙이다. DIP (The Dependency Inversion Principle) High level modules should not depend on low level modules. Both should depend on abstractions. Abstractions should not depend on details. Details should depend on abstractions. DIP란 위의 내용에 기반을 둔 내용이다. 즉, 상위 레벨의 모듈은 하위 레벨의 모듈에 의존해서는 안되며 그 abstractions에 의존해야한다. 또한, Abstractions은 detail한 내용에 의존해서는 안되며 Detail 또한 Abstract..

Spring Framework

1. Spring MVC DispatcherServlet 1. Client로부터 Request가 오면 Dispatcher Servlet 2. DispatcherServlet은 파라미터 정보, URL 등을 참고하여 HandlerMapping를 통해 해당 Request가 매핑된 Controller가 있는지 확인한 후, 어떤 Controller에서 처리할지 결정합니다. 3. Controller가 결정되었다면 DispatcherServlet은 해당 Request 정보가 담긴 오브젝트를 HandlerMapping으로 넘기고, 여기서 해당 Controller로 전달해줍니다. 4. Controller가 작업을 완료하면 그 결과를 다시 DispatcherServlet에 전달합니다. 5. 전달 받은 결과를 바탕으로 Di..

반응형