2024/09 13

2. Elastic Compute Cloud - 서비스 종류와 EC2 살펴보기

IaaS (Infrastructure as a Service) : 하드웨어 인프라를 인터넷을 통해 제공하는 서비스를 말한다.  IaaS는 가상화된 하드웨어, 스토리지, 네트워크, 운영체제 등을 제공하며, 사용자는 이를 이용해 자신의 애플리케이션을 실행할 수 있다. AWS EC2, Microsoft Azure, Google Compute Engine 등이 IaaS 서비스를 제공한다.PaaS (Platform as a Service) : 애플리케이션을 개발, 실행, 관리하기 위한 플랫폼을 인터넷을 통해 제공하는 서비스를 말한다. PaaS는 IaaS에서 제공하는 하드웨어 인프라와 미들웨어를 이용하여, 애플리케이션 개발, 배포, 운영 등에 필요한 환경을 제공한다. 예를 들어, AWS Elastic Beansta..

1. Elastic Compute Cloud - Budget(예산설정)

root 계정으로 전환한다.Billing Dashboard 클릭이 화면에서 어떤 서비스에서 요금이 청구되는지 볼 수 있다. 지금은 요금청구가 발생하지 않도록 해볼것이다.Create a budget 클릭월별 예산을 지정할 수 있다. 금액은 달러 단위이다.Budget이 만들어졌다. Forecasted amount : 예상되는 지출 Current vs. budgeted : 설정한 금액과 사용된 금액을 퍼센테이지로 나타낸다.Budget 이름을 클릭하면 예산의 85% 달성 시, 예상 지출이 100% 달성 시, 실제 사용금액이 100% 달성 시 알람이 오도록 설정되어 있다.

2. Identity and Access Management - MFA

MFA : 다요소 인증 비밀번호 외에 다른요소도 추가하여 인증하는것을 MFA라고 한다.root 유저와 IAM 유저의 MFA를 추가하라는 오류가 뜬다. Add MFA 클릭Assign MFA 클릭MFA를 설정할 디바이스와 그 이름을 정하고 Next 클릭한다. 현재는 휴대폰으로 인증하는 방식을 선택했다.저 링크를 누르면Android나 iOS 운영체제에서 사용할 수 있는 인증 앱들이 나온다.인증 등록 절차를 마치면 이런 화면이 나온다.이제 로그아웃하고 다시 로그인 하려하면 MFA 코드를 입력해야 한다.

1. Identity and Access Management

1. IAM 소개AWS Identity and Access Management (IAM)은 AWS 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스이다. IAM을 사용하면 AWS에서 사용자, 그룹 및 역할을 생성하고 관리하여 리소스에 대한 액세스를 안전하게 제어할 수 있다. IAM을 사용하면 다음과 같은 보안 기능을 수행할 수 있다. 1. 인증 : IAM을 사용하여 사용자가 AWS 리소스에 액세스할 때 사용자 이름과 암호를 요청하여 인증할 수 있다. 2. 권한 부여 : IAM을 사용하여 사용자, 그룹 또는 역할에 대한 권한을 지정할 수 있다. 권한은 AWS 리소스에서 수행할 수 있는 작업을 나타내며 IAM 정책을 사용하여 지정할 수 있다. 3. 권한 검증 : IAM을 사용하여 사용자가 AWS 리..

SpringBoot

LocalDateTime 데이터를 하드코딩으로 넣는법 LocalDateTime a = LocalDateTime.of(2024, 9,21,12,30) 년, 월, 일, 시, 분 형식이다.LocalTime 데이터를 하드 코딩으로 넣는 법 LocalTime a = LocalTime.of(12,30) 시, 분영업시간 외 주문 시 예외처리를 하기 위해선 LocalDateTime을 사용해야 한다. 왜냐하면 날짜 변경의 개념이 필요하기 때문이다. 18시 30분에 가게를 열고 새벽 5시에 문을 닫는 상황일 때 LocalTime을 사용하면 시간과 분만 알 수 있기 때문에 에러가 발생한다. 컨트롤러에서 Enum을 반환할 경우, 그 Contoller 클래스의 애노테이션은 @RestController로 설정되어있어야 한다.@D..

8. My 셀렉샵 Top5 회원 찾기 설계 및 구현

Entity 클래스 ApiUseTime.java 생성 Entity 클래스니까 테이블을 만드는 것이다. 회원별 누적 API 사용시간을 측정하여 저장할것이다. package com.sparta.myselectshop.entity;import jakarta.persistence.*;import lombok.Getter;import lombok.NoArgsConstructor;import lombok.Setter;@Entity@Getter@Setter@NoArgsConstructor@Table(name = "api_use_time")public class ApiUseTime { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Lo..

7. Controller는 어떻게 테스트할까?

Spring에서 제공하는 기본 Filter를 구현한다. 16번째 줄의 SecurityContextHolder가 인증객체를 담고있는 컨텍스트를 담는 공간 setAuthentication = 인증객체 주는것 우리는 인증객체를 실제로 만들것이다. Mock처럼 우리는 가짜 필터를 만드는 것이다. Security가 동작하면 테스트하는데 방해가 된다. 그래서 가짜 Security를 만들어서 사용한다.이 애노테이션을 통해서 컨트롤러를 테스트할 수 있다 또한 테스트할 컨트롤러를 지정한다. 여기서는 UserController.class, ProductController.class 컨트롤러를 지정했다. excludeFilters = 제외할 것 WebSecurityConfig.class는 개발자가 만든 클래스다.저 부분에서..

6. 통합 테스트란 무엇일까

단위 테스트 VS 통합 테스트1. 단위 테스트(Unit Test) 하나의 모듈이나 클래스에 대해 세밀한 부분까지 테스트가 가능하다. 하지만 모듈 간에 상호 작용 검증은 할 수 없다. 2. 통합 테스트(Integeration Test) 두 개 이상의 모듈이 연결된 상태를 테스트 할 수 있다. 모듈 간의 연결에서 발생하는 에러 검증 가능하다. Spring Boot를 이용한 통합 테스트통합 테스트 여러 단위 테스트를 하나의 통합된 테스트로 수행한다. 단위 테스트 시 Spring은 동작되지 않는다. "@SpringBootTest" 스프링이 동작되도록 해주는 애너테이션이다. 테스트 수행 시 스프링이 동작한다. Spring IoC/DI 기능을 사용 가능하다. Repository를 사용해 DB CRUD가 가능하다. ..

5. Mockito란 무엇일까?

테스트 코드에서는 Bean객체를 주입받아 사용하는 메서드를 어떻게 처리할까? @Mock이 붙어있는 객체는 가짜객체이다.  Mockito가 가짜객체를 넣어준다. 이 가짜객체를 이용해서 Service 코드를 테스트할 수 있다. Service 테스트를 하려하는데 Repository에 연결이 되어있어서 분리해서 테스트를 할 수 없는 상황이다. 이런 문제점을 해결하기 위해 Mockito라는 프레임워크가 만들어졌다.가짜 객체를 사용해서 Service 생성자를 만들어서 테스트하고있다. 하지만 그대로 사용하면 오류가 발생한다.  41번줄에서 productService.updateProduct(productId, requestMyPriceDto);에서 productId의 번호를 찾지 못해 오류가 발생한다. 이 부분을 직..

4. 단위 테스트란 무엇일까?

단위 테스트란?버그 발견 시간이 늦어짐에 따라 비용이 기하급수적으로 커지는 것을 알 수 있다. 1. Development : 개발 2. Unit Tests (단위 테스트) : 개발자 테스트 3. QA Testing : 블랙박스 테스팅, 주로 QA팀이 Production 환경과 유사한 환경(Stage)에서 테스팅 4. Production : 실 서비스 운영 환경 따라서 테스트 코드를 작성한다면 프로그램의 버그를 사전에 발견하여 기하급수적인 비용의 증가가능성을 사전에 방지할 수 있다. 개발자는 단위 테스트를 작성하여 프로그램을 테스트 할 수 있다. 단위 테스트는 작은 단위로 쪼개서 각 단위가 정확하게 동작하는지를 검사하는 테스트 기법이다. 단위 테스트는 빠르게 작성할 수 있고 문제 발생 시 어느 부분이 잘 ..