문제(출처: 프로그래머스)

(문제 내용)
문자열 my_string과 정수 k가 주어질 때, my_string을 k번 반복한 문자열을 return 하는 solution 함수를 작성해 주세요.

 

▶ 내가 푼 방식

//내가 작성한 코드
function solution(my_string, k) {
    var answer = '';
    for(i=0; i<k; i++){
        answer= answer+my_string
    }
    return answer;
}

 

 다른 유저가 푼 방식

// 유저 1
function solution(my_string, k) {
    return my_string.repeat(k)
}

 

 배운 것들

     - string.repeat(k)-> 문자열이 k 만큼 반복된다.

     -

 

자바 프로젝트 생성

프로젝트 생성시 JDK 버전이 java 8 이상으로 선택

 

JUnit 5 라이브러리 추가

File →  프로젝트 구조 (project structure) 선택

라이브러리 추가 메뉴

모듈선택 → 종속요소(Defendencies)

+ 버튼을 누르고 라이브러리에서 Marven.. 선택

JUnit 5를 위한 메이븐 의존 추가

org.junit.jupiter:junit-jupiter:5.5.0 입력  → 확인

추가할 JUnit 라이브러리 목록

OK 버튼 누르고 라이브러리를 프로젝트에 추가

 

Chap01 폴더 생성 → JUnit을 이용한 코드 실행

StringTest.java

package chap01;

import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;

public class StringTest {
    @Test
    void substring() {
        String str = "abcde";
        assertEquals("cd", str.substring(2,4));
    }
}

 

결과

 

 

14 강 용도 측화형 인덱싱

인덱스와 시스템 구성 - RDBMS 의 한계가 보일 때

별도의 인덱스 서버와 같은 것을 만들고 이 인덱스 서버에 웹 애플리케이션에서 RPC(remote procedure call) 등으로 액세스하는 방법을 사용

 

RPC 혹은 웹 API

 

위의 그림에서 [4] 을 만드는 이유는 

  • [3] 에 인덱스를 저장하기에 충분한 메모리가 탑재되어 있지 않은 경우가 많기 때문
  • [3] 이 여러대 있을 경우 모드 인덱스를 가지고 있도록 해야하기 때문
  • 커다란 검색 인덱스를 여러 프로세스에서 같이 사용하도록 구성하는 것은 적합하지 않기 때문

요약

RDBMS 로는 한계 일때는

  • 배치 처리로 데이터 추출
  • 별도 인덱스 서버를 만들어서 웹 API 등으로 쿼리

용도특화형 인덱싱 - 튜닝한 데이터 구조 사용하기

특정한 목적만으로 사용할 수 있도록 튜닝한 데이터 구조(용도특화형 인덱싱) 사용 →  빠른 속도로 데이터 검색 가능 

 

방식?

  • 데이터를 정기적으로 뽑아낸다.( 배치 처리로 데이터 추출)
  • 뽑아낸 데이터엑서 데이터 구조를 구축
    • 검색용 역 인덱스 -> 스코어링 알고리즘 이용
    • 키워드 링크용 Trie 등

15 강 이론과 실전 양쪽과의 싸움

대규모 웹 앱을 개발, 운용시

  • 문제 해결 시에는 때로는 고전 이론이, 때로는 실전 경험을 통한 지식이 중요
  • 알고리즘과 데이터 구조를 활용할 때, 해당 이론을 이해하고 실제로 어떻게 적용할 수 있는지를 알아두는 것이 중요

 이론과 실전을 모두 아우르는 균형 있는 접근이 필수적

<인프런 강의 정리>  비전공자도 이해할 수 있는 AWS 입문/실전

EC2 >  로드 밸런서

     로드 밸랜서 생성

Load Balancer(LB) 유형 선택

- AWS 의 EC2  에서 Load Balancer 로 이동하여 로드밸랜서 생성

 

위의 종류에서 Application Load Balancer 를 선택하여 생성

 

Application Load Balancer 생성

기본 구성

  • 로드 밸런서 이름 : 원하는 이름 으로 설정
  • 체계
    • 인터넷 경계 선택
      • 내부 옵션은 Private IP 를 활용할 때 사용
  • IP 주소 유형
    • IPv6을 사용하는 EC2 인스턴스가 없다면IPv4를 선택
      • IPv4 형태 :121.13.0.5
      • Pv6의 형태 : 2dfc:0:0:0:0217:cbff:fe8c:0

네트워크 매핑

 - 가용 영역 : 어떤 가용 영역으로만 트래픽을 보낼 것인지 제한하는 기능,

       아직 가용 영역에 대한 제한을 할 필요가 없으므로 모두 선택

 

보안 그룹

- EC2 를 다른 탭에서 열어서 보안그룹으로 들어가서 생성

     인바운드 규칙에 HTTP 와 HTTPS 추가 -> 모든 IPv4 허용으로 설정

 

방금 생성한 보안 그룹만 선택

리스너 및 라우팅

ELB 로 들어온 요청을 어떤 대상으로 보낼지 생성

위 사진에서 대상 그룹 생성 클릭 하면 아래의 그림이 나온다.

 

- 대상 그룹 생성 - 

    → EC2 인스턴스로 요청을 보낼 것이므로 인스턴스 선택

 

- 프토토콜, IP 주소 유형, 프로토콜 버전 설정 단계

* ELB가 사용자로부터 트래픽을 받아 대상 그룹에게 어떤 방식으로 전달할 지 설정 

   

대상 그룹 이름은 어플리케이션을 구별하기 쉽게 작성

    나머지는 아래와 같이 설정

HTTP(HTTP1), 80번 포트, IPv4 주소로 통신을 한다 는 의미

 

- 상태검사 설정 단계 

상태 검사 : EC2 내 서버가 잘 작동하고 있는지 확인하기 위해 만드는 기능

 

상태 검사를 위와 같이 추가한 후에 서버에 /health API 를 만들어서

ELB에서 요청을 보낼 때 마다  200 번대 응답이 잘 날라오는지 확인이 가능하도록 추가 필요

ELB : 상태 검사 API 추가 예시

 

- 대상 등록 단계 

* 인스턴스를 선택한 후 "아래에 보류 중인 것으로 포함" 을 선택

* 대상 그룹 생성 클릭

(대상 그룹 생성 완료)

------------------------------------------------------

 

다시 리스너 및 라우팅으로 돌아와서  아래와 같이  생성된 대상 그룹을 선택

 

 

로드 밸랜서 생성 버튼을 눌러서 완료

EC2 보안 그룹(Security Group) 설정 확인

  • 접속하려는 서버의 포트에 접근권한이 있는지 확인

 

애플리케이션 권한 확인

  • 포트 3000 : 권한이 필요없는 포트
  • 포트 80 : 시스템 포트 → 루트 권한이 필요하다. 루트 권한 없이 포트 80을 사용하려고 하면 오류가 발생
$ sudo npm run start:prod

- sudo 이용하여 실행 하면 해결된다.

+ Recent posts