API Gateway Service ㄴ Proxy 역할 ㄴ 단일 진입로를 통해 일관적으로 작업을 처리하고자 하여 필요성 증가 --> api gateway 만 상대하면 된다. 1. 인증, 권한 부여 2. 검색 통합 3. 응답캐시 4. 정책, qos 다시 시도, 회로차단기 5. 속도제한 6. 부하분산 7. 로깅, 추적, 상관 관계 8. 헤더, 쿼리 문자열 청구 변환 9. ip 허용 목록에 추가 Spring Cloud 에서의 msa 간 통신 ㄴ RestTemplate RestTemplate resTemplate = new RestTemplate(); restTemplate.getForObject("http://localhost:8080/", User.class, 200); ㄴ Feign Client: 마이크로..
Service Discovery ㄴ 서비스 클라이언트가 서비스를 호출할 때, 서비스의 위치(ip 주소와 port)를 알아낼 수 있는 기능 ㄴ 외부에서 msa를 검색해 사용하기 위해 사용 ㄴ key // value 지정 ㄴ client - loadbalancer - discoveryservice - msa1, 2, 3 Spring Eureka ㄴ 포트 여러 개를 하나에 등록 시켜 사용 DiscoveryService @SpringBootApplication @EnableEurekaServer //유레케 서버로서 지정 public class Msa1Application { public static void main(String[] args) { SpringApplication.run(Msa1Applicatio..
0. Software Architecture Antifragile ㄴ Auto Scaling: 리소스 사용량이나 조건에 따라 인스턴스나 리소스를 자동으로 확장/축소할 수 있는 개념 ㄴ Microservice: 전체 서비스를 구축하고 있는 개별적인 모듈이나 기능을 독립적으로 개발하고 배포하고 운영할 수 있도록 세분화된 서비스 ㄴ Chaos engineering: 변동, 예견된 불확실성, 예견되지 않는 불확실성, 카오스 불확실성에서도 안정적인 서비스를 유지 ㄴ Continuous deployments: 지속적인 통합과 배포환경 구성 1. Cloud Native Architecture - 확장 가능 아키텍쳐 ㄴ 시스템 수평적 확장 ㄴ확장된 서버로 시스템의 부하 분산, 가용성 보장 ㄴ 시스템 또는, 서비스 애플..
프로젝트를 하면서 프론트 쪽으로 response를 해주어야 하는데, 반환값을 넘겨주는 것을 까먹었다가 몇 시간 동안 오류로 고생해서 글로 정리하려한다. 지금도 예외 처리에 대해 공부해야 할 내용은 많지만 그래도 프론트에게 조금 더 친절하게 반환값을 넘겨줘야겠다는 생각이 들었다. (이전 반환값들은 정말 막무가내 그 자체였다. 회원가입 시 토큰만 덜렁 넘겨준다던지) 1. ResponseDto를 작성한다. Java 제네릭 API Response를 활용할 것이다. 제네릭 타입은 타입을 파라미터로 가지는 클래스와 인터페이스를 말한다. 제네릭 타입은 클래스 또는 인터페이스 이름 뒤에 "" 부호가 붙고, 사이에 타입 파라미터가 위치한다. 타입 파라미터는 일반적으로 대문자 알파벳 한 글자로 표현합니다. 제네릭을 사용하..
[Git Branch(원격) 생성 기본 구조] main (default) ㄴ 사용자 이니셜/default ㄴ 사용자 이니셜/func1 ㄴ 사용자 이니셜/func2 ㄴ ... * default 를 master 에서 main 으로 변경해주기 * 분리된 기능이라면 branch 별도로 생성 (func1, func2) [intellij(로컬) 에서 Git Branch 다루기] * 꼭 pull할 것이 있는지 먼저 확인 현재 intellij에서 main branch에 있다면, 1. git branch 사용자 이니셜/default 2. 사용자 이니셜/default 로 checkout 3. 사용자 이니셜/default로 이동이 확인되면 git branch 사용자 이니셜/func1 ... 로 branch 생성 Git br..
[EC2, RDS] ubuntu, mySQL 사용 *코드 관련 내용은 ec2 서버에 이미지, 파일 업로드 관련 내용은 s3 서버에 *과금 주의: application.properties 를 깃에 올릴 때, application-aws.properties를 하나 더 만들고 후자는 gitignore에 지정하여 올리지 않도록 대신 application.properties에 application-aws.properties 지정해 주어야 함. spring.profiles.include=aws -1 AWS 1편: EC2 생성 후 Spring Boot 띄우기 :: 뱀귤 블로그 (tistory.com) AWS 1편: EC2 생성 후 Spring Boot 띄우기 Overview AWS EC2 인스턴스를 생성하고 Spri..
25강 데이터베이스 객체 데이터베이스 객체 데이터베이스에는 테이블 외에 다양한 데이터를 저장하거나 관리하는 '어떤 것' 을 만들 수 있다. (테이블, 뷰, 인덱스 .. ) -> 데이터베이스 내에 정의하는 모든 것 여기서 객체란, 데이터베이스 내에 실체를 가지는 어떤 것을 일컫는다. ->SELECT, INSERT 같은 명령은 실체가 없으므로 객체가 아니다. 객체는 이름을 가지고 이름이 겹쳐선 안된다. -> 열 또한 이름을 가지고 열에 별명을 붙일 수 있지만 이는 객체가 아니다. -> 이름을 붙일 때는 제약 사항(명명규칙)을 따라야 한다. 기존 이름이나 예약어와 중복하지 않는다. 숫자로 시작할 수 없다. 언더스코어(_) 이외의 기호는 사용할 수 없다. 한글을 사용할 때는 더블쿼트(MySQL에서는 백쿼트)로 ..
📖 문제 https://school.programmers.co.kr/learn/courses/30/lessons/118666 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💻 code def solution(survey, choices): answer='' dict={'R':0, 'T':0, 'C':0, 'F':0, 'J':0, 'M':0, 'A':0, 'N':0} for i, j in zip(survey, choices): if j==1: dict[i[0]]+=3 elif j==2: dict[i[0]]+=2 elif j==3: dict[i[0]]+=1 ..
[문제] 2007년 KOI에 N명의 학생들이 참가하였다. 경시일 전날인 예비소집일에, 모든 학생들은 자신이 N명 중에서 몇 등을 할 것인지 예상 등수를 적어서 제출하도록 하였다. KOI 담당조교로 참가한 김진영 조교는 실수로 모든 학생의 프로그램을 날려 버렸다. 1등부터 N등까지 동석차 없이 등수를 매겨야 하는 김 조교는, 어쩔 수 없이 각 사람이 제출한 예상 등수를 바탕으로 임의로 등수를 매기기로 했다. 자신의 등수를 A등으로 예상하였는데 실제 등수가 B등이 될 경우, 이 사람의 불만도는 A와 B의 차이 (|A - B|)로 수치화할 수 있다. 당신은 N명의 사람들의 불만도의 총 합을 최소로 하면서, 학생들의 등수를 매기려고 한다. 각 사람의 예상 등수가 주어졌을 때, 김 조교를 도와 이러한 불만도의 합..