728x90
반응형

Github Actions란?

GitHub에서 제공하는 자동화 도구로, 코드를 빌드하거나 테스트하고, 배포 또는 다양한 작업을 자동으로 수행할 수 있도록 합니다.

 

Actions는 조직 및 개인별로 매달 레파지토리 통합 실행 시간 2000분을 무료로 제공합니다.

스토리지는 500MB를 제공한다고 하는데, 오늘은 크론잡만 돌릴거라 신경쓰지 않겠습니다.

조직 > settings > Billing and plans

 

 

금액적인 부분은 아래 공식 페이지에서 확인해주세요.

https://docs.github.com/ko/billing/managing-billing-for-your-products/managing-billing-for-github-actions/about-billing-for-github-actions

 

GitHub Actions 요금 청구 정보 - GitHub Docs

계정에 포함된 스토리지 또는 시간(분)을 벗어나 GitHub Actions를 사용하면 추가 사용량에 대한 요금이 청구됩니다.

docs-internal.github.com

 

 

1.  프로젝트에 폴더 및 파일 생성

 

.github/workflows까지 폴더를 만들고 .yml 파일을 생성합니다.

 

GitHub Actions는 .github/workflows 폴더 아래에 있는 .yml, .yaml 파일을 읽고 조건에 따라 실행합니다.

그러니 폴더 위치와 이름은 정확하게 입력해주시고 파일명은 원하시는대로 작성하셔도 무방합니다.

 

 

2. 크론잡 실행 코드 작성

# Actions workflows에 표시될 이름
name: Scheduled Job

on:
  schedule:
    # 매일 자정(밤 12시)마다 프로그램 실행
    - cron: "0 15 * * *"

jobs:
  run-scheduled-task:
    runs-on: ubuntu-latest
    steps:
      # Repository 코드 체크아웃
      - name: Checkout code
        uses: actions/checkout@v3

      # Node.js 프로젝트 설정
      - name: Set up Node.js
        uses: actions/setup-node@v3
        with:
          node-version: "20.11.1"

      # 의존성 모듈 설치 명령어 (npm install 써도 무방)
      - name: Install dependencies
        run: npm ci
        
      # 프로그램 실행 명령어
      - name: Run scheduled script
        run: npm run start

 

작성한 코드를 깃에 올려주면 GitHub Actions가 자동으로 파일을 읽고 조건에 맞게 실행됩니다.

 

 

3. Actions 실행 결과 확인

레파지토리 > Actions

 

Actions 탭으로 이동하면 실행된 결과를 확인할 수 있습니다.

 

schedule.yml 파일에서 Actions workflows에 표시될 이름을 설정했었죠.

저는 간단하게 Scheduled Job이라는 이름으로 작성했는데, 다른 액션과 구분이 쉽고 이해하기 편한 이름으로 설정해주세요.

 

실행 결과를 보니 실행 시간이 30초 정도 걸렸다고 나옵니다.
실제 로컬에서 돌릴때는 10초 이내로 끝났던 작업인데 시간이 더 걸렸습니다.

 

그래서 실행 결과를 상세 결과를 확인하기 위해 눌러서 들어가봤습니다.

 

 

 

프로그램 실행 이전에 의존성 모듈 설치부터 작업하는 부분이 많았나봅니다.

 

Run scheduled script가 로컬에서 npm run start로 프로그램을 실행하는 부분입니다.

8초정도 걸린걸 보니 로컬에서 돌릴때의 시간이랑 비슷했습니다.

 

그래도 실행 결과 요약에 표시된 시간은 총 19초인데 27초로 계산되어있네요.

보여주지 않는 부분에서 시간을 더욱 측정하는건지 오차는 조금 있어보입니다.

 

실행시간은 금액적인 부분과도 직결되어있기 때문에 꾸준한 모니터링을 해주는것이 좋겠습니다.

 

 

728x90
반응형
728x90
반응형

1. 데이터베이스 생성

 

RDS 검색 후, 데이터베이스 생성을 시작합니다.

 

 

 

 

 

프리티어를 선택합니다.

 

DB 인스턴스 클래스 중 가장 성능이 낮은 db.t3.micro로 선택합니다.

스토리지는 최솟값인 20으로 설정하고 자동 조정 활성화도 체크 해제합니다.

 

 

로컬에서도 접근 가능하도록 퍼블릭 엑세스를 '예'로 설정합니다.

 

 

백업을 비활성화 합니다. (저는 비용이 무서워서 비활성화 했지만 일주일까지 설정하시는 분들도 있는것같습니다)

 

 

로그는 모두 비활성화하고 삭제 방지 활성화는 설정해도 좋을것같습니다.

 

 

 

2.  파라미터 그룹 생성

파라미터 그룹 생성 버튼을 클릭합니다.

 

 

Engine type 및 파라미터 그룹 패밀리를 생성했던 DB 설정에 맞게 선택하여 생성합니다.

 

 

 

3.  파라미터 그룹 설정 편집

생성한 파라미터 그룹을 편집합니다.

 

 

 

time_zone을 검색하고 Asia/Seoul을 입력합니다.

 

 

 

character_set_을 검색하고 utf8mb4을 입력합니다. (6개)

 

 

 

collation_을 검색하고 utf8mb4_general_ci을 입력합니다. (2개)

 

 

 

 

 

4.  데이터베이스에 파라미터 그룹 적용

생성했던 데이터베이스를 클릭합니다.

 

 

추가구성 > 파라미터 그룹을 새로 만든 그룹으로 적용합니다.

 

 

즉시 적용으로 설정하고 편집을 완료합니다.

 

 

 

 

 

 

 

 

 

[참고한 글]

https://velog.io/@zosungwoo/AWS-%ED%94%84%EB%A6%AC%ED%8B%B0%EC%96%B4-AWS-RDS-for-MySQL-%EC%83%9D%EC%84%B1-%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0-%EA%B7%B8%EB%A3%B9-%ED%8E%B8%EC%A7%91

 

[AWS] 프리티어 AWS RDS for MySQL 생성, 파라미터 그룹 편집

AWS RDS for MySQL을 프리티어로 생성해보고, 타임존과 한글 및 이모지 사용을 위해 파라미터 그룹 편집을 진행해보자.

velog.io

https://dream-and-develop.tistory.com/415?category=1081124

 

[AWS] RDS MySQL 인스턴스 생성 및 데이터베이스 연결과 한글 설정

AWS에서 제공하는 RDS 서비스를 이용해, MySQL 인스턴스를 생성해보자. 데이터베이스 생성 표준 생성 방식으로 데이터베이스를 생성하자. 엔진 옵션 MySQL 엔진을 사용할 것이기 때문에, MySQL을 선택

dream-and-develop.tistory.com

 

728x90
반응형

'Web > AWS' 카테고리의 다른 글

AWS RDS(DB) 파이썬으로 접속 / MariaDB  (0) 2021.08.18
728x90
반응형

📑 오류에 대하여

 

저는 JSTL의 c:forEach문을 사용하여 특정 vo리스트 속 값을 추출해내는 작업을 하고있었습니다.

 

그런데 vo 요소중 partName의 타입을 찾을 수 없다는 오류가 나왔습니다. 오류만 보고 vo의 타입을 잘못쓴것인지, DB에서 값을 제대로 못받는것인지 고민하고 있었습니다. 하지만 다른 부분에는 문제가 없었기에 수상함을 인지하고 forEach문을 확인해봤습니다.

 

 

 

<c:forEach items="roomPartList" var="p">
	<li class="list-group-item">${p.partName }</li>
</c:forEach>

아무리봐도 잘못된 곳이 없다고 생각했습니다. 그런데 items 쪽의 roomPartList 부분에 ${ }처리가 되어있지 않았습니다. 알수없는 값에서 partName을 뽑으라고 하니,  당연히 type을 찾을 수 없다는 오류가 나왔던 것 입니다.

 

 

마감이 얼마 남지않아 급하게 작업하다보니 간단한 부분인데도 놓쳐서 놀란 경험을 적어봅니다..ㅎ

728x90
반응형
728x90
반응형

📃 Controller에서 redirect 사용

@GetMapping("/host/roomOne")
	public String hostRoomOne(Model model,
			@RequestParam("roomId") int roomId, @RequestParam("detailAddressId") int detailAddressId) {
		Map<String, Object> result = roomService.getHostRoomOne(roomId, detailAddressId);
		model.addAttribute("room",result.get("room"));
		model.addAttribute("address",result.get("address"));
		model.addAttribute("hashtag",result.get("hashtag"));
		return "/host/room/roomOne";
	}


@PostMapping("/host/modifyRoom")
	public String postModifyRoom(RedirectAttributes redirect, Room room, Address address, String hashtag) {
		address = roomService.modifyRoom(room, address, hashtag);
		redirect.addAttribute("roomId",room.getRoomId());
		redirect.addAttribute("detailAddressId",address.getDetailAddressId());
		return "redirect:/host/roomOne";
	}

 

[ 숙소의 정보 수정이 완료되면, 숙소 상세보기 페이지를 띄우도록 하는 redirect 요청입니다]

 

redirect를 사용하는 이유 : 저는 Controller에서 메서드의 작업이 끝난 후 return값으로 /webapp/WEB-INF/jsp 위치의 jsp파일명을 반환합니다. 숙소 수정이 완료된 후, 숙소 상세보기 페이지인 roomOne.jsp가 열리도록 해야하는데, 해당 숙소의 상세정보도 받아와야 합니다. 그렇기 때문에 간단하게 jsp만 여는것이 아니라 숙소 상세정보를 가져온 후 해당 jsp를 포워딩하는 /host/roomOne으로 redirect를 진행합니다.

 

- postModifyRoom 메서드의 작업이 끝나면 hostRoomOne 메서드로 redirect를 진행합니다.

 

- redirect를 진행하는 메서드에서는 param값으로 'RedirectAttributes redirect'를 받고, redirect.addAttribute("이름",값);으로 redirect를 하는 위치로 값을 전달한다.

 

- redirect를 요청받은 메서드의 param값은 @RequestParam("이름") 자료형 변수명의 형식으로 값을 받아 사용합니다.

728x90
반응형
728x90
반응형

📄 enter값 DB에 저장하기

 

notice.getNotice_content().replace("\r\n","<br>")

 

notice.getNotice_content()는 jsp에서 받아온 문장값을 저장해둔 위치이다.

 

문장값을 가지고 있는 변수 뒤에 .replace("\r\n","<br>")을 사용하여 db에 직접 태그를 넣을 수 있도록 변경한다.

 

 

 

 

기존과 다르게 <br>태그가 들어간 것을 확인할 수 있다.

 

 

 

 

&amp;lt;적용 결과&amp;gt;

 

 

 

 

 

 

 

 

📑 <br> 저장된 문장 원래상태로 가져오기

 

notice.getNotice_content().replace("<br>","\r\n")

가져올때는 <br>과 \r\n을 치환해서 가져오면 된다.

&lt;변경된 모습&gt;

 

728x90
반응형
728x90
반응형

💊 sts 경로에 한글 이름 존재

 

 

sts의 위치 경로에 사진과 같이 한글이 포함되어있으면 작동하지 않는다.

 

 

 

 

 

 

sts.exe파일과 이름이 동일한 sts.ini 파일을 메모장으로 열어 확인해보면, 경로에 한글이 추가된 것을 확인할 수 있다.

 

 

 

해결법 : 경로를 모두 영어로 바꾸고 동일하게 맞춘다.

728x90
반응형

+ Recent posts