❖ 배포 스크립트 확인기본적인 스크립트 작성 방법github에 접속 > Actions 탭 > New workflow > ecs를 선택하면 배포 설정 스크립트 포멧을 확인 할 수 있습니다.❖ 요구사항develop은 자동 배포가 됩니다.stg, qa, prod 환경은 수동 배포를 진행합니다.현재 코드를 빌드하여 ECR에 업로드 후 ECS에 배포를 합니다.배포 시작, 배포 성공, 배포 실패시 슬랙으로 알람을 보냅니다.❖ 배포 스크립트 작성- 다양한 옵션들을 설명하려고 보니 코드가 길어졌지만 하나씩 설명을 드리면 커스텀하기 쉬울 것입니다. ◈ 트리거 설정- develop 브랜치가 push가 되면 실행합니다.- workflow_dispatch 는 수동으로 배포할 수 있는 기능입니다.- workflow_dispat..
❖ 워크플로우 작성프로젝트 최상단에 .github/workflows 디렉토리를 만들고 ci or cd 스크립트를 실행할 yml or yaml 파일을 생성합니다.여러개의 파일을 구분하여 워크플로우를 작성할 수 있습니다..github/workflows/ci.yml.github/workflows/cd.yml...워크플로우 파일 예제# 선택사항 - 워크플로우 이름name: learn-github-actions#선택사항 - github repository's "Actions" tab에 보여질 이름입니다.run-name: ${{ github.actor }} is learning GitHub Actions# 트리거를 지정합니다.on: [push]jobs: check-bats-version: # check-bats-..
GitHub Actions는 코드 변경 시 자동으로 빌드, 테스트, 배포 등의 작업을 수행하여 개발 과정을 효율화하고, 더 안정적인 소프트웨어를 빠르게 제공하는 데 도움을 줍니다.- 공식 문서 : https://docs.github.com/ko/actions ❖ github actions 주요 개념workflow워크플로는 이벤트가 발생했을 때 수행하는 작업입니다.eventworkflow를 트리거 하는 행위입니다.보통 브랜치 push와 같은 이벤트가 발생한다면 workflow에 정의된 작업을 수행합니다.jobjob은 여러개의 step으로 구성되며 Github Actions의 클라우드 서버에서 실행됩니다.job 단위로 CI서버의 독립적인 VM 또는 컨테이너에서 실행됩니다.각 단계가 동일한 실행기에서 실행되므..
CI/CD 는 지속적 통합(Continuous Integration)과 지속적 배포(Continuous Deployment) 또는 지속적 배포(Continuous Delivery)를 의미합니다.이는 소프트웨어 개발의 자동화된 프로세스를 가리키며, 개발자들이 코드를 빠르고 안정적으로 배포할 수 있도록 돕습니다.❖ CICI는 지속적인 통합을 의미하며, 개발자가 코드 변경을 자주 작은 단위로 통합하여 저장소에 반영하는 프로세스를 가리킵니다.주요과정코드 통합 : 모든 개발자는 변경된 코드를 자주, 최소 하루에 한 번씩 통합 저장소에 푸시(push)합니다.자동빌드 : 코드가 통합되면 CI서버가 자동으로 빌드(build)를 실행하여 코드가 정상적으로 컴파일되는지 확인합니다.자동 테스트 : 빌드 후 자동화 된 테스트..
❖ Clean Go Code- 해당 링크의 go언어의 클린코드 내용을 요약한 것입니다.- URL : https://github.com/Pungyeon/clean-go-article❖ 왜 깨끗한 코드를 작성해야 할까?가독성 높은 코드는 개발자가 작업을 이해하는 데 필요한 시간을 절약해 줍니다.클린 코드 작성은 가독성뿐만 아니라 일관성과 재사용성을 강화해 유지보수에도 이점을 제공합니다.클린 코드를 생각하지 않고 편리하게 코드를 작성하게 되면 코드 리뷰라 테스트가 어려워질 수 있습니다.클린 코드를 작성하는 데 초기 비용이 들 수 있지만, 유지보수 비용을 감안하면 장기적으로 오히려 시간을 절약할 수 있습니다.❖ 클린코드 소개☻테스트 주도 개발 짧은 주기로 테스트를 통과하는 코드를 작성하고 이를 반복해서 기능을 ..
❖ MAPF란?MAPF는 여러 에이전트가 각자의 목표 위치까지 충돌없이 이동하는 가장 효율적인 경로를 찾는 문제입니다.로봇의 경로 계획, 비디오 게임에서의 캐릭터 이동, 공항 또는 항구에서의 차량 관리등 다양한 분야에서 활용됩니다.MAPF의 주된 도전 과제는 '충돌'입니다. 두 에이전트가 동시에 같은 시간에 동일한 경로를 사용할 수 없습니다. 따라서 각 에이전트의 이동 경로는 다른 에이전트와 상호 작용을 고려하여 계획되어야 합니다. 이 문제를 해결하기 위한 다양한 접근 방법이 존재합니다.최적화 기반 접근법: 최적의 해결책을 찾는 것을 목표로 합니다. A* 알고리즘과 같은 기존의 단일 에이전트 경로 찾기 알고리즘을 확장하여 사용합니다.충돌 회피 기반 접근법: 충돌을 최소화하는 것을 목표로 합니다. 에이전트..
예전에는 구글없으면 개발할 수 없었는데 요즘은 chatGPT 없으면 개발할 수 없을것 같다. ㅋㅋㅋ 너무나 강력한 녀석 재밌는 이슈가 있어서 공유하려고 한다. chatGPT는 어떻게 질문하냐에 따라 답변이 달라질 수 있다는 예제인거 같아 글을 올린다. - 첫번째 질문 redisHash의 인덱스 기능에 대해 설명해줘 라고 간단히 적어봤는데 그런 기능은 제공하지 않는다고 나온다. 내가 사용했는데 무슨소리야!!! - 두번째 질문 그래서 import 주소를 입력해 줬더니 바로 사과하고 알려준다. ㅋㅋㅋ 빠른 사과에 풀렸다. 내가 질문한 정보를 바탕으로 계속 답변을 해줘서 너무 좋은거 같다. 개인적으로 아직까진 bard보다 opanAI가 훨씬 똑똑하다.
❖ 개요 redis를 jpa처럼 사용할 수 있는 방법을 알아보려고 한다. value를 조금 더 쉽게 관리할 수 있고 데이터 관리(DB, REDIS) 부분이 통일성 있게 관리되어 가독성 측면에서도 좋아 보인다. ❖ GIT 주소 https://bitbucket.org/basic-setup/redis-repository/src/master/ ❖ 설정하기 1. dependency 추가 implementation("org.springframework.boot:spring-boot-starter-data-redis:3.1.1") 2. application.yaml 수정 - redis 접속 정보를 입력한다. spring: redis: host: localhost 3. 모델 및 repository정의 - @RedisH..
❖ 사용안 계층구조에서 다른 하위클래스를 여러개 가지고 있을 경우 이를 처리하기 위해서 사용합니다. 예를 들어 동물 하위에 강아지, 고양이, 토끼라는 하위 클래스가 있고 이들이 가지고 있는 필드와 처리하는 함수가 다를 경우 이를 하나의 필드로 구분하여 사용할 수 있습니다. ❖ 어노테이션 설명 @JsonTypeInfo : 다형성을 지원하는 Jackson 라이브러리로 json 직렬, 역직렬을 지원합니다. use : 다형성을 나타내는 정보를 어떻게 사용할지 지정합니다. - JsonTypeInfo.Id.NAME : 타입 이름을 사용하여 다형성을 처리합니다. - JsonTypeInfo.Id.CLASS: 클래스 정보를 사용하여 다형성을 처리합니다. - JsonTypeInfo.Id.MINIMAL_CLASS: 최소한의..
❖ 설명 문서 자동화를 위해 rest docs과 swagger를 함께 진행하였다. 설명이 조금 길긴 하지만 단계적으로 정리하여 이해하기 쉽도록 정리하였습니다. ● rest docs을 작성하고 swagger로 변환하는 과정이다. 1. restdocs-api-spec을 정의(test code 작성 및 문서설명) 2. OpenAPI3 spec으로 변환 RESTful API를 정의된 규칙에 맞게 API spec을 json이나 yaml로 표현하는 방식을 의미합니다. 3. OpenAPI3 spec 변환 문서를 swaggerUI에 적용 4. build 및 테스트 ❖ git url https://bitbucket.org/basic-setup/kotlin-restdoc-swagger/src/master/ ❖ 구현 1. ..