전체 글

Spring

스프링 시큐리티 - Method Security

1. 개요 스프링 시큐리티는 method level에서도 접근 제어가 가능하며 Service layer 에서의 보안을 강제할 수 있다. `@PreAuthorize` `@PostAuthroize` `@PreFilter` `@PostFilter` @Configuration @EnableMethodSecurity(prePostEnabled = true, securedEnabled = true) public class MethodSecurityConfig { } 2. 사용 - Spring AOP 이용하여 동작하며, 다음과 같이 사용할 수 있다. @Service public class MyCustomerService { @PreAuthorize("hasAuthority('permission:read')") @Po..

CI & CD

Github Actions로 workflow 생성 (Spring Boot)

1. Workflow 생성 Repository 상단의 Actions를 클릭합니다. 템플릿화 되어 있는 workflow를 선택합니다. 현재 Github Repository의 .github/workflows/ 내에서 yml 파일을 작성할 수 있도록 이동됩니다. 2. Secret 환경변수 등록 - public Repository에서 보이면 안 되는 변수 (docker hub 계정 등)가 있다면 Repository 설정에서 등록할 수 있습니다. - 사용은 ${{ secrets.AWS_ACCESS_KEY_ID }} 와 같이 사용합니다. 3. Workflow 작성 - Workflow는 CI/CD 모두 한 파일에 작성할 수 있지만, PR 요청 시에 CI 작업만 하고, PR 승인이 나야지만 CD 과정까지 이루어질 수 ..

Docker

Jib를 이용하여 자바 컨테이너 빌드

Jib란 ? - Jib란 구글 클라우드 도구 jib를 이용하여 프로젝트 빌드와 동시에 컨테이너 이미지까지 만들어서 push까지 해주는 역할을 합니다. - jib에 대한 상세설명 Jib는 왜 사용하는가 ? 기존의 Docker 빌드 흐름은 아래와 같습니다. Jib를 이용하면 JAVA 애플리케이션을 컨테이너 이미지로 구성하는 작업을 한 번에 해줍니다. Dockerfile 작성 없이 간편하게 JAVA 애플리케이션을 컨테이너 이미지로 만들 수 있다는 장점이 있습니다. Jib 설정하기 1. build.gradle에 plugin 추가 plugins { id 'java' id 'org.springframework.boot' version '3.1.0' id 'io.spring.dependency-management' ..

Docker

Ncloud에서 Docker, Docker swarm 설치

# Ncloud 서버 설정은 아래 매뉴얼을 참고합니다. https://www.ncloud.com/guideCenter/guide/1 0. 기본설정 $ yum -y update $ yum install -y yum-utils $ yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo $ yum-config-manager --enable docker-ce-nightly 1. Docker 설치 $ yum install docker-ce docker-ce-cli containerd.io -y 2. [필요시] Docker Data 경로 변경 (파티션이 나뉜 경우) $ sudo vim /lib/systemd/syste..

CI & CD

프로젝트 CI/CD 툴의 선정과 Github Actions 개념

프로젝트 아이디어 선정 후 Naver Cloud Platform을 이용해 서버를 만든 이후 2가지 작업을 가장 먼저 수행 했습니다. 1) Swagger UI 설정 (API 문서 자동화 위해) 2) CI/CD 빌드 - 디자이너, 기획자, 프론트 개발자가 반영한 내용을 쉽고 빠르게 확인하기 위해 - 프로젝트에서 지속적으로 수행해야하는 반복 작업들은 매번 직접 하기엔 비효율적이고 실수할 위험이 있기 때문 그 중 CI/CD 빌드를 위해 도구를 선정하였는데 대표적으로 Github Actions와 Jenkins 2가지가 있었습니다. 1. Github Actions & Jenkins 1-1. Github Actions GitHub Actions is a continuous integration and continuo..

카테고리 없음

Spring Boot + Nuxt.js 환경에서의 FCM 웹 푸시 구현 (2/2) - Nuxt.js편

🪜 1. Nuxt.js - Firebase 설정 1. package.json yarn add firebase { "dependencies": { "firebase": "^9.20.0", } } 2. nuxt.config.js 플러그인을 등록합니다. export default { ... plugins: [ { src: '@/plugins/firebase' }, ], }, 3. plugins/firebase.js import { initializeApp, getApps } from 'firebase/app'; import { getMessaging } from 'firebase/messaging' const firebaseConfig = { /* FCM 발급받은 키 입력 */ apiKey: "", authD..

Spring

Spring Boot + Nuxt.js 환경에서의 FCM 웹 푸시 구현 (1/2) - Spring Boot편

👀 1. FCM ? FCM이란 Firebase Cloud Messaging의 약자로써, 메시지를 무료로 보낼 수 있는 메시징 솔루션입니다. 다양한 플랫폼에서 개발하고 FCM backend에 push 요청만 보내면 FCM backend에서 플랫폼 별로 push를 전송합니다. 👀 2. FCM 사용하는 이유 다양한 플랫폼에서 push를 보내기 위해선 플랫폼 환경별로 push 서비스 개발 필요합니다. FCM은 중간에서 플랫폼에 종속되지 않고도 push 전송 가능합니다. 서버로부터 push 알림을 받기 위해서는 client가 서버에 계속 접속해야 합니다. 이는 전력 사용, 네트워크 효율 문제를 야기합니다. FCM은 이를 어느 정도 해결해줄 수 있다는 점이 장점입니다. 🪜 3. Spring Boot - FCM 설정..

Spring

[Mybatis] Mybatis에서 DTO로 분리하기

개요 현재 회사에서는 하나의 객체를 만들어 모든 레이어에서 사용하거나 Controller Layer에서 HashMap으로 받고 있습니다. 추가적으로 제약조건으로 Post Method만 허용합니다. 회원 (코멘트) API를 예로 들어 DTO로 분리해 보겠습니다. AS-IS 1. 회사에서 사용하는 VO (모든 레이어에서 사용) @Getter @Setter @AllArgsConstructor @NoArgsConstructor @Builder @JsonNaming(UpperSnakeCaseStrategy.class) public class UserVO { private Long USER_ID; private String NAME; private String COMMENT; private String EMAIL;..

mers
nathan 개발블로그