일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 완전탐색
- Project Bee
- 창의충전소
- 티스토리챌린지
- 비트마스킹
- 폴더구조
- 구현
- BFS
- springboot
- 이영직
- 노마드코더
- react
- FlatList
- 오블완
- 버튼 활성화
- 휴대폰 기기
- 백준 1992
- service 테스트
- 경우의 수
- multipart upload
- web view
- ReactNative
- Navigation
- 해외 대외활동
- 상속 관계 매핑
- bfs dfs
- 원복
- React Natvive
- 자료구조
- React Native
- Today
- Total
유미의 기록들
배포까지 완료한 상태여서 Route53에서 도메인을 구매하여 ALB를 연결해보려고 한다.1. 도메인 구매Route 53도메인을 발급하고 관리해주는 서비스, DNS 서비스 DNS (Domain Name System) IP 주소는 많은 숫자들로 이루어져 있기 때문에 기억하기 어려운 문제점이 있다. IP를 문자로 구성하기에는 컴퓨터가 처리하기 쉬운 값의 형태가 숫자이기 때문에 한계가 있었다. 이를 해결하기 위해 나온 것이 문자를 IP주소로 변환해주는 서버 DNS이다 AWS Route53을 입력하고 `도메인 등록`을 클릭한다 내가 원하는 도메인을 입력하고 선택한 다음, 결제를 진행하면 된다 연락처 정보를 입력하고 10~20분 있다가 등록한 이메일로 메일이 날라온다. 이메일을 확인해야만 정상적으로 도메인이 등록된..
구축한 AWS EC2와 RDS 환경에서 SpringBoot 애플리케이션을 Docker로 배포하면서 발생한 문제들을 해결한 과정을 정리했다1. SpringBoot Docker Image 만들기2. 로컬에 Docker Container 실행3. Docker Hub에 Push하기4. EC2에서 Docker Image Pull 받기5. EC2에서 Docker Container 실행1. SpringBoot Docker Image 생성도커 이미지를 만들기 위해서는 DockerFile을 작성해야 한다. DockerFile을 작성하기 전에 SpringBoot 애플리케이션을 jar 파일로 빌드를 하였다 로컬의 SpringBoot 프로젝트 루트 디렉토리에 DockerFile 만들어서 다음과 같이 작성했다FROM openj..
이어서 이번에는 보안그룹 생성, ELB 생성, RDS를 생성하려고 한다5. 보안그룹 생성보안그룹인스턴스에 대한 인바운드 (외부 → 인스턴스) 와 아웃바운드 (인스턴스 → 외부) 트래픽을 제어하는 가상 방화벽 역할을 한다 6. ELB (Elastic Load Balancer) 생성ELB애플리케이션 트래픽을 여러 대상에 자동으로 분산 시켜 안정적인 AWS 서버 환경을 운용하는데 도움을 주는 서비스 EC2뿐만 아니라 컨테이너(ECS), AWS Lamda 등 다양한 서비스와 연계하여 부하를 분배할 수 있다 Load Balancing (부하 분산)컴퓨터 네트워크 기술의 일종으로 둘 혹은 셋 이상의 중앙처리 장치 혹은 저장 장치와 같은 컴퓨터 자원들에게 작업을 나누는 것 단일 서버가 처리할 수 있는 요청량에는 ..
최종프로젝트의 전체 아키텍처를 설계해보았다. 이를 토대로 AWS 인프라를 구축해보려고 한다. 다음 순서로 진행할 예정이다.1. VPC 생성2. 서브넷 생성 (public 2대, private 2대)3. EC2 인스턴스 생성 4. 라우팅 테이블 생성 (IGW, NAT, 서브넷 연결)5. 보안그룹 생성6. ELB 생성7. RDS 생성8. 애플리케이션 배포 AWS Cloud 내에는 Region이 존재하며, 각 Region 안에는 2개 이상의 AZ(Availability Zone)이 있다Region 이 국가/도시 단위의 지리적 위치라면, 가용영역(AZ)는 각 리전 안의 데이터 센터라고 보면 된다하나의 가용영역이 각종 재해, 정전 등 다양한 이유로 작동불능이 되더라도 다른 가용영역에서 서비스를 재개하여 유지할 수..
⚠️ SavePartyRequest가 접근 제어자가 protected라서 인스턴스 생성 불가@AllArgsConstructor(access = AccessLevel.PUBLIC) // Protected에서 Public으로 변경public class SavePartyRequest { // ...}접근 제어자를 public으로 변경정적 팩토리 메서드 추가Reflection 리플렉션힙 영역에 로드 된 Class 타입의 객체를 통해, 접근 제어자 상관없이 원하는 클래스의 정보에 접근해서 조작할 수 있도록 지원하는 API 장점유연성과 확장성구체적인 클래스를 알지 못해도 동적으로 클래스를 만들어서 의존 관계를 맺어줄 수 있다.개발 규모가 큰 스프링인 경우, 리플렉션을 이용한 Dynamic proxy를 통해서 ..
Multipart Upload 방식과 Pre-signed URL 방식 각각의 장단점이 있어, 상황에 따라 적합한 방식을 선택하는 것이 좋습니다. 비교해볼게요.1. Multipart Upload 방식장점서버에서 모든 처리를 관리: 서버가 파일을 나누어 업로드하고, 업로드 완료 요청까지 전부 관리하므로, 업로드 진행 상태나 에러 처리를 서버에서 완벽하게 제어할 수 있습니다.중간 에러 복구 용이: 네트워크 에러나 업로드 중 문제가 생겨도, 실패한 파트만 다시 업로드하면 되므로 효율적입니다.큰 파일 업로드에 유리: 대용량 파일의 경우 한 번에 업로드할 필요가 없으므로 메모리 사용량이 줄어들고 속도가 개선될 수 있습니다.단점서버 부하 증가: 모든 파일 업로드 작업이 서버에서 이루어지므로 서버 자원 소모가 큽니다...
💡 배경유료로 제공되는 강의 영상이 모든 사용자에게 무제한으로 노출되는 것을 방지하기 위해, 수강 유저에게만 제한적으로 접근권한을 주고자 한다. 기존의 구현 방식은 배포된 CloudFront 도메인과 S3경로만으로도 외부에서 접근 가능 했기 때문에 무단으로 강의 영상이 유출될 위험이 있었다. 따라서 제한된 시간동안만 유효하고 필요한 권한만 제공하는 SignedURL을 적용하려고 한다. 📝 Signed URL어떠한 요청을 수행하는 데 필요한 제한된 권한과 시간을 제공하는 URL Signed URL에는 쿼리스트링에 인증정보, 만료 날짜 및 시간 같은 추가 정보가 포함되서 콘텐츠에 대한 액세스를 세부적으로 제어할 수 있다 🚀 CloudFront에 SignedURL 적용하기 서명된 URL과 서명된 쿠..
💡 배경강의 서비스 도메인을 담당하면서 대용량 영상 파일에 접근할 때, 사용자에게 빠른 접근성을 보장할 필요가 있었다. 특히 여러 지역에서 강의를 시청하는 사용자가 많을 경우, 파일 전송 속도와 안정성에 문제가 발생할 가능성이 있다. 따라서 최대한 물리적으로 가까운 서버에서 파일을 받을 수 있도록 CDN을 적용해보려고 한다. 📝 CDN (Content Delivery Network)지리적으로 분산된 서버들을 연결한 네트워크웹 컨텐츠의 복사본을 사용자에 가까운 곳에 두거나 동적 컨텐츠의 전달을 활성화하여 웹 성능 및 속도를 향상할 수 있게 한다어떤 사용자가 웹사이트에 방문할 때, 사용자가 원본 서버로부터 멀면 멀수록 웹사이트는 천천히 로드될 것이다. 따라서 사용자에게 가장 가까운 Edge 서버라고 ..
깃허브에 있는 프로젝트를 AWS EC2 우분투 환경에서 git clone으로 내려 받아 jar 파일을 빌드하여 서버를 배포하려고 한다 1. AWS 세팅하기1) AWS Region 설정리전 (Region)인프라를 지리적으로 나누어 배포한 각각의 데이터 센터 EC2를 통해 컴퓨터를 빌려서 원격으로 접속하는데, EC2를 통해 빌려서 쓸 수 있는 컴퓨터들이 전 세계적으로 분포해 있는 위치를 리전(Region)이라고 한다 리전을 선택하는 기준애플리케이션의 주된 사용자들의 위치와 지리적으로 가까운 리전을 선택하는 것이 유리하다. 따라서 한국 유저들이 주로 사용할 서비스이기 때문에 아시아 태평양 (서울)로 선택할 것이다2) 인스턴스 생성하기EC2 대시보드에서 `인스턴스 시작`을 눌러 인스턴스를 생성한다 원하는 인스턴..
💡 배경@Getter@AllArgsConstructor(access = AccessLevel.PROTECTED)public class SaveLectureRequest { @NotBlank(message = "제목을 작성해 주세요") private String title; @NotBlank(message = "설명을 작성해 주세요") private String description; @NotBlank(message = "추천인을 작성해 주세요") private String recommend; @NotNull(message = "카테고리를 작성해 주세요") private Category category; @NotNull(message = "난이도를 작성해..