728x90

콘솔 root 계정으로 접속

IAM 서비스 접속

사용자(Users)에서 사용자 생성

IAM 은 전체 서비스로 리전에 상관없음 IAM에서 사용자를 생성하면 어디서나 사용가능

 

 

사용자 생성

 

다음으로 권한 설정

 

그룹생성

 

 

admin 그룹 추가 가능

 

다음 클릭

 

검토

 

태그 추가

 

 

 

 

사용자 생성 완료

 

사용자가 추가됨

 

 

그룹도 추가됨

 

 

 

그룹 클릭해서 보면 사용자가 추가되어 있음

 

 

사용자를 보면 권한 정책이 그룹에 의해서 추가되어 있음을 알수 있음

 

콘솔 별칭 생성

 

새 URL 로 접속하면

IAM 사용자로 로그인 가능

로그인 후 계정을 클릭하면

IAM 사용자가 나옴

 

 

그룹에 정책을 적용시 해당 그룹 사용자들에게 모두 적용

인라인 정책은 사용자에게 직접 권한 정책 부여

사용자는 여러 그룹의 정책을 상속받을수있음

 

정책 구조

버전 포함

ID는 선택

Statement는 여러개 일수도

SID는 선택

effect는 allow 또는 deny

principal 는 account/user/role

action은 effect에 기반한 api 호출 목록

resource는 적용될 action의 resource 목록

condition은 statement가 언제 적용될지 정함

 

# 중요 : Effect / Principle / Action / Resource

728x90

'study > TIL' 카테고리의 다른 글

[TIL] 2024-05-17 AWS  (0) 2024.05.17
[TIL] 2024-05-16 AWS  (0) 2024.05.16
[TIL] 2024-05-13 AWS  (0) 2024.05.13
[TIL] 2024-05-10 AWS  (0) 2024.05.10
[TIL] 2024-05-09 , 자바스크립트 정규표현식 사이트 / catalina.out 라인 끊어서 저장  (0) 2024.05.09
728x90

IAM

유저들과 그룹들

IAM = Identity and Access Management

Root는 기본으로 만들어 지고 공유되지 않도록 한다

사용자는 그룹에 속할 수 있다.

그룹은 사용자가 포함되면 다른 그룹은 포함되지 않는다.

사용자는 그룹에 속할 필요는 없고 한 사용자는 여러 그룹에 속할 수 있다.

 

사용자와 그룹을 생성하는 이유는 AWS 계정을 사용하도록 허용하기 위함

허용하기 위해서는 권한을 부여해야한다.

이를 위해 정책(JSON 문서)을 설정한다.\

최소권한 원칙 적용

728x90

'study > TIL' 카테고리의 다른 글

[TIL] 2024-05-16 AWS  (0) 2024.05.16
[TIL] 2024-05-14 AWS  (0) 2024.05.14
[TIL] 2024-05-10 AWS  (0) 2024.05.10
[TIL] 2024-05-09 , 자바스크립트 정규표현식 사이트 / catalina.out 라인 끊어서 저장  (0) 2024.05.09
[TIL #3]  (2) 2023.05.02
728x90

728x90
728x90

요구사항? 요청사항?


진행중인 프로젝트에 투입되거나 시작되는 프로젝트에 투입되었을 때 아무래도 가장 먼저 하는게 분석이지 않을까 한다.
코드 분석이든 업무 분석이든
기능을 만들거나 테이블을 만들때 요구사항정의서를 참고하게 되는 경우가 대부분이다.
이전에 진행했던 프로젝트들의 요구사항정의서를 만들어 본적이 없이 그냥 보기만 했다.
그 요구사항 정의서들은 각 프로젝트마다 거의 제각각으로 보이기도 했다.

요구사항 또는 요청사항을 만들어 보는 연습도 해볼겸 작성해보면 어떨까 싶었다.

완벽하진 않아도 일단 해보는 것이 좋을 듯 싶다.

소프트웨어 방법론은 여러가지이다.
폭포수라던가 애자일이라던가
어쨌든 두 방법론 모두 요구사항을 어떻게 정의해 나가는지가 중요하다고 생각이 들었다.

대부분의 프로젝트는 폭포수 방법론을 따르는 경우가 많았고 요구사항을 모두 정의한 뒤에 프로젝트 개발에 들어가는 경우가 많았다.
하지만, 모든 프로젝트가 그렇듯 개발기간 중에 요구사항은 시시때떄로 변경되었다.
어떻게 보면 매번 요구사항이 변경되는 것은 고질적인 문제가 아닐까 싶기도 하다.

애자일 방법론으로 프로젝트를 진행해 본적은 없다.
그렇기 때문에 생소하기도 하고 개념적으로 이해한다고 하더라고 경험이 없는 것은 아쉬운 마음에 아는 한도 내에서
애자일 방법론(그냥 내 마음대로)에 따라 해보려고 한다.

https://www.atlassian.com/ko/agile/product-management/requirements

위 글을 참고해 보았다.

총 4단계로 나눠 져있는데

여기서는 목표를 적하고 이 목표에 대한 스토리를 작성해 본다.

1. 목표


요구사항의 목표는 사용자가 회원가입을 하고 로그인을 완료하는 것이다.

  1. 회원가입
  2. 로그인 성공

이라는 2개의 목표를 가지고 있다.

2. 스토리


  1. 사용자는 로그인을 하려고 한다.
  2. 로그인을 하기 위해서는 이메일과 비밀번호가 필요한다.
  3. 회원가입이 안되었을 경우 회원 가입을 진행한다.
  4. 회원가입이 되어있을 경우 로그인을 진행한다.
  5. 로그인이 성공하면 AccessToken과 RefreshToken / 사용자 정보를 전달 받는다.
  6. 로그인이 실패하면 실패사유를 전달 받는다.

사용자가 로그인에 성고하기위한 스토리를 작성해 보았다.

위 스토리를 토대로 세부적으로 조금 더 작성해 보자.

  1. 사용자는 로그인을 하려고 한다.
  • 사용자가 로그인 화면에 접근할 수 있는 URL이 필요하다.
  1. 로그인을 하기 위해서는 이메일과 비밀번호가 필요한다.
  • 로그인 화면에는 이메일과 비밀번호입력 받는 화면
  • 로그인 실행 버튼
  • 비밀번호 마스킹
  1. 회원가입이 안되었을 경우 회원 가입을 진행한다.
  • 회원가입 화면으로 이동하는 버튼
  • 회원가입시 필수 사항과 선택 사항
  1. 회원가입이 되어 있을 경우 로그인을 진행한다.
  2. 로그인이 성공하면 AccessToken과 RefreshToken / 사용자 정보를 전달 받는다.
  • 로그인 인증 방식은 JWT
  • 토큰 만료 시간
  • 반환할 사용자 정보 항목
  1. 로그인 실패하면 실패사유를 전달 받는다.
  • 실패시 메시지
  • 메시지 표시 화면

등을 좀더 세부적으로 작성해 보았다.

회원가입 화면으로 넘어 갔을 때 는 어떨까

  1. 회원 가입에 필요한 항목을 작성한다.
  • 필수 : 이메일 / 비밀번호 / 비밀번호 확인 / 이름
  1. 회원 가입 버튼 클릭
  • 필수 항목 체크
  • 유효성 검사
  1. 회원 가입 취소 시 이전 화면 으로 이동
  • 취소 버튼
  • 이전에 접속한 URL
  1. 회원 가입 성공시 로그인 화면으로 이동
  2. 회원가입 실패시 실패 사유 알림
  • 실패시 메시지
  • 메시지 표시 화면

등을 작성해 볼 수 있을 거 같다.

분류해보기


위에서 작성한 스토리를 바탕으로 클라이언트 / 서버 / 데이터베이스 3개의 관점으로 분류해보면 어떨까 싶다.

데이터 베이스


사용자는 이메일과 비밀번호를 로그인 시에 입력하고 또 회원가입 시 필수 정보로 입력하고 있다.그리고 이름을 필수 항목으로 받고 있다.
데이터 베이스에서는 이 항목들이 들어가야한다.

 

728x90
728x90

1. AWS 글로벌 인프라

https://infrastructure.aws/

 

글로벌 인프라 리전 및 가용 영역

AWS는 컴퓨팅, 스토리지, 데이터베이스, 분석, 네트워킹, 기계 학습 및 AI, 모바일, 개발자 도구, IoT, 보안, 엔터프라이즈 애플리케이션을 비롯하여 광범위한 글로벌 클라우드 기반 제품을 제공하

aws.amazon.com

- AWS Regions

- AWS Availibilty Zones

- AWS Data Centers

- AWS Edge Locations / Points of Precense

 

리전이란 데이터센터 집합

모든 서비스는 리전에 국한된다.

 

리전 선택 요인

1. 법률 준수

2. 지연시간

3. 사용가능한 서비스

4. 요금

 

가용용역은 리전 안에 있다.

보통 3개 

1개 또는 2개이상의 데이터센터 정확히 모름

 

전송지점

 

리전 별 서비스

https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services

 

728x90

'study > TIL' 카테고리의 다른 글

[TIL] 2024-05-14 AWS  (0) 2024.05.14
[TIL] 2024-05-13 AWS  (0) 2024.05.13
[TIL] 2024-05-09 , 자바스크립트 정규표현식 사이트 / catalina.out 라인 끊어서 저장  (0) 2024.05.09
[TIL #3]  (2) 2023.05.02
[TIL#2]  (0) 2023.04.27
728x90

흐름도 / 흐름도 / 흐름도 그리기는 너무 어려워 !

그래도 해보자!

 

DFD (Data Flow Diagram)

https://en.wikipedia.org/wiki/Data-flow_diagram

 

Data-flow diagram - Wikipedia

From Wikipedia, the free encyclopedia Graphical representation of the "flow" of data through an information system Data flow diagram with data storage, data flows, function and interface A data-flow diagram is a way of representing a flow of data through a

en.wikipedia.org

 

사실 순서도나 흐름도 는 간혹 그려보기는 했지만, 전체적인 프로젝트에 대해 그려보지는 못했다 . 

API 시퀀스 다이어그램을 만들어 보기는 했지만

https://twentytwentyone.tistory.com/195

 

[관리자 페이지] Admin Page - 로그인 프로세스 생각해보기 #1

Admin Page - 로그인 프로세스 생각해보기 User가 Admin Page에 접근했을 경우 User의 Token 이 존재 하는지 확인 존재 한다면 Server에서 Token 발송 검증 요청 User 정보 return Token 이 없다면 Sign In Page로 이동

twentytwentyone.tistory.com

https://twentytwentyone.tistory.com/196

 

[관리자 페이지] Admin Page - 로그인 프로세스 생각해보기 #2

[관리자 페이지] Admin Page - 로그인 프로세스 생각해보기 #2 User는 먼저 로그인 화면으로 진입합니다. 로그인 할 수 있는 아이디나 패스워드가 없는 경우 회원가입을 진행하고 회원가입이 정상적

twentytwentyone.tistory.com

 

Draw.io를 사용해 계속해서 그려보는 연습을 해려고한다.

 

Draw.io는 이전에 웹에서만 사용했었는데 데스크탑 앱을 받을 수 있어서(이전에도 있었나?) 설치 후 사용했다.

 

처음 그려본 로그인 DFD 

 

 

 

뭔가 초라한 느낌 ㅎㅎㅎ

맞게 그린지도 모르겠지만 어쨌든 그려 봤다.

 

728x90
728x90

 

1. 자바스크립트 정규표현식 사이트

https://regexr.com/3e48o

 

RegExr: Learn, Build, & Test RegEx

RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp).

regexr.com

 

정규표현식을 테스트 해보기 좋은 사이트

 

2. catalina.out 라인끊어서 저장 하기

log가 계속 쌓이게 되면 로그 파일을 보고 싶어서 열리는데만 수분이 걸린다.

이때 Logrotate를 사용하여 날짜별로 끊어서 저장하거나 다른 방법을 사용할 수 있지만, 당장 라인을 끊어서 보고 싶을때 

tail 30000 catalina.out > break.out

 

으로 30000 라인을 끊어서 저장 가능하다.

728x90

'study > TIL' 카테고리의 다른 글

[TIL] 2024-05-13 AWS  (0) 2024.05.13
[TIL] 2024-05-10 AWS  (0) 2024.05.10
[TIL #3]  (2) 2023.05.02
[TIL#2]  (0) 2023.04.27
[TIL] Day #1  (0) 2023.04.26
728x90

필요한 유틸리티 기능은 무엇이 있을까?


프로젝트를 진행하다보면 기존의 코드를 사용하던 처음 부터 구축하여 진행을 하던간에 공통 유틸리티 성의 코드를 가져다 쓰거나 만들어서 쓰는 일들이 많은 것 같다.

대부분의 요구사항에는 파일이나 엑셀, 암호화 등의 기능을 요구하는 곳이 많기도 하고 접근에 관한 이력을 DB에 저장해야하는 경우도 많았다.

  • 파일 유틸
  • 암호화 유틸
  • 엑셀 유틸
  • request 유틸
  • session 유틸

등이 기본적으로 필요했고, 많이 쓰였다.

더 많은 프로젝트를 접해 보면 더 좋겠지만, 위와 관련된 코드들을 구현해 보면 좋겠다는 생각이 들었다.

유틸리티 class


보통 이전의 유틸리티 class들을 static으로 불러와 많이 사용하였다. 요즘은 new 또는 @Component로 DI 를 통해 사용한다고 하는데 그 기준이 어떻게 되는지는 모르겠다.

아마도 객체 상태에 대한 이해와 java에서 사용되는 static에 대한 이해, 클래스 메소드가 어디서 무엇을 위해 사용되는지 이해하면 좋을 듯 싶었다.

static은 클래스 단위로 관리되어 메모리 사용량을 줄이고, 객체 생성 오버헤드 없이 접근할 수 있다. 라는 설명을 본적이 있는데, static 멤버 변수를 전역으로 공유 되기 때문에 특정 시점에서의 생성된 객체에 특정 멤버 변수의 값을 변화 시켜야 하는 작업이라면 static 보다는 instance의 유틸을 만들어 보는것이 좋지 않을까 싶다.

728x90
728x90

1. Dependency 추가

// build.gradle

implementation group: 'org.springframework.boot', name: 'spring-boot-starter-data-jpa', version: '3.2.5'
runtimeOnly group: 'com.h2database', name: 'h2', version: '2.2.224'
compileOnly group: 'org.projectlombok', name: 'lombok', version: '1.18.30'
annotationProcessor group: 'org.projectlombok', name: 'lombok', version: '1.18.30'

2.property 추가

// application.yml
spring:
  application:
    name: hiioAdminServer
  datasource:
    driver-class-name: org.h2.Driver
    url: jdbc:h2:P:\hiio420\h2DB\test.db
    username: sa
    password:
  jpa:
    database-platform: org.hibernate.dialect.H2Dialect
    hibernate:
      ddl-auto: create-drop       
    properties:
      hibernate:
        dialect: org.hibernate.dialect.H2Dialect
        format_sql: true
        show_sql: true

3. TestEntity 생성

package com.hiio.adminserver;


import jakarta.persistence.*;
import lombok.*;

@Entity
@Table(name = "TEST")
@Getter
@Setter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class TestEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @Builder
    public TestEntity(Long id) {
        this.id = id;
    }
}

4. Repository 생성

package com.hiio.adminserver;

import org.springframework.data.jpa.repository.JpaRepository;

public interface TestRepository extends JpaRepository<TestEntity,Long> {
}

5. Test 코드 작성

package com.hiio.adminserver;


import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@SpringBootTest
@Slf4j
class HiioAdminServerSpringApplicationTests {

    @Autowired
    private TestRepository repo;
    @Test
    @DisplayName("test")
    @Transactional
    void contextLoads() {
        log.info(repo.toString());
        TestEntity t = TestEntity.builder().name("test1").build();
        repo.save(t);
        List<TestEntity> tList = repo.findAll();
        for (TestEntity item : tList){
            log.info(item.getId().toString());
            log.info(item.getName());
        }

    }

}

...

2024-05-07T15:48:25.291+09:00  INFO 37480 --- [hiioAdminServer] [    Test worker] .a.HiioAdminServerSpringApplicationTests : 1
2024-05-07T15:48:25.292+09:00  INFO 37480 --- [hiioAdminServer] [    Test worker] .a.HiioAdminServerSpringApplicationTests : test1
728x90
728x90

혼자 진행하는 프로젝트의 묘미는 그냥 내마음 대로 할 수 있다는게 아닐까?

FastAPI로 만들던 개인 프로젝트, 회사에서 다른 프로젝트를 FastAPI로 만들다 보니 흥미가 떨어 졌다. 

그래서 한번도 사용해 보지 않았던!

Spring Boot도 배울겸 JPA도 써볼 겸 관리자 페이지 Rest API 서버를 Spring boot로 처음부터 만들면 좋겠다 싶어서 시작해 본다.

 

IDE는 IntelliJ를 사용한다.

JDK 17 버전으로 spring boot는 3 버전을 사용한다.

 

IntelliJ의 New Project에는 Spring Initializr Generators가 있기 때문에 이를 통해서 프로젝트를 생성해보자.

기본적인 프로젝트 정보를 기입한 후에 Next!

 

 

아직은 아무런 Dependency들을 추가 하지 않고 Create를 한다.

 

 

프로젝트 파일들이 생성 됩니다.

 

Shift + F10으로 실행시켜봅니다.

프로젝트가 실행 되지만 바로 끝나버립니다.

 

Stackoverflow https://stackoverflow.com/questions/32758996/intellij-process-finished-with-exit-code-0-when-spring-boot-run

 

IntelliJ Process finished with exit code 0 when spring-boot run

I have a problem when starting spring-boot appication from IntelliJ-Idea. I don't have this problem when running application through terminal. :: Spring Boot :: (v1.2.1.RELEASE) 2015-09-24...

stackoverflow.com

에서는 boot-start-web을 추가하고, controller를 하나 만들어 보라고 합니다.

 

build.gradle에 dependency를 추가합니다.

 

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
	implementation 'org.springframework.boot:spring-boot-starter-web'
}

 

그리고 MainController.java 파일을 만들어 GetMapping으로 메소드를 하나 추가해 줍니다.

 

package com.hiio.adminserver.main;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MainController {

    @GetMapping("/")
    public String index() {
        return "Hello World";
    }
}

 

이후 다시 Run 해보면

 

 

localhost:8080 으로 서버가 열리게 됩니다.

 

위 주소로 접속하게 되면

 

Hello World 문구를 볼수 있습니다.

728x90

+ Recent posts