본문 바로가기

반응형

전체 글

(152)
[SpringBoot] 간단한 게시판 만들기 #4 - DTO, Repository 구현 DTO와 Repository란 무엇일까? DTO(Data Transfer Object) : 계층 간에 데이터 교환을 위한 Java Bean이다. Repository : Database에 CRUD 명령을 실행하게 만드는 Interface (JpaRepository를 extends 하게 되면 CRUD를 사용할 수 있게 된다.) BoardDto : 게시판 API 간에 Data를 전달하는 DTO OAuthAttributes : OAuth2 Login을 통해서 가져온 OAuth2User의 정보를 담아주기 위한 DTO shop.pingping2.board.dto.BoardDto.java package shop.pingping2.board.dto; import shop.pingping2.board.domain.Boa..
[Lambda] IAM, SG 변경 사항을 Slack으로 알람 받기 개요 IAM 혹은 Security Group에서의 변경 사항이 감지되면 Slack으로 통보를 받고 싶습니다. ⇒ Notification을 받는 방법은 여러 가지가 있을 것이다. AWS Config를 통해 감지할 수도 있고, 필자의 방식대로 EventBridge를 통해 특정 API CALL이 발생될 경우에 감지될 수 있도록 설정할 수도 있다. 간단하게는 API CALL이 감지될 경우 SNS - Email로 보내는 방법이 있는데 보기에 이쁘지가 않다. 그렇기 때문에 Lambda를 Trigger하여 문자를 Parsing하고 Template대로 Slack에 Webhook을 보내 Slack에서 Notification을 받는 방법이 보기에 깔끔할 것이라 생각한다. 전제 조건 SLACK APP을 미리 생성해둔 후에 ..
[SpringBoot] 간단한 게시판 만들기 #3 - domain(Entity) 구현 패키지명은 보통 domain 혹은 entity로 표기하며, 내부 Class or Enum 파일들은 DB 처리용으로 DB Table과 Mapping된다. Entity 객체는 보통 DTO(Data Transfer Object)와 분리하게 된다. domain 패키지에는 Board, Time, Role, User 4개의 파일이 존재하게 된다. Board : 게시판 글 정보들을 모아놓은 Board 테이블 Time : 데이터 조작 시 자동으로 날짜를 수정해주는 JPA의 Auditing 기능을 사용한다. 이 Time Entity를 만들어 놓고 다른 Entity(Board, ..)로부터 상속받아서 사용하게 된다. Role : Spring Security 중 사용자의 권한을 Enum 클래스로 만들어 관리한다. (Enum..
[SpringBoot] 간단한 게시판 만들기 #2 - Controller 구현 Controller는 View로부터 오는 API 요청들을 어떻게 처리할 것인지 정의하는 역할을 한다. => /board/list란 경로로 GET 요청이 왔을 때 어디로 보내고, /board/post란 경로로 GET 요청이 올 때 어디로 보내고, POST 요청이 오면 xxService로부터 Data를 받아와서 view로 Attribute를 전달하는 등, /xx/xxx 경로로 요청이 올 때 PathVariables를 받아올지 등 정의를 수행한다. - Controller는 @Controller 애노테이션을 붙여서 해당 Class가 Controller임을 알려줘야 한다. shop.pingping2.board.controller.BaseController.java / 경로로 오는 요청을 처리하는 Controlle..
[SpringBoot] 간단한 게시판 만들기 #1 - 세팅 주의 스프링부트 맛보기 위해 정리한 글이므로 본 글은 참고용으로만 봐주시기 바랍니다. Ref https://victorydntmd.tistory.com/325 https://devlog-wjdrbs96.tistory.com/209 Spring Initializr을 통해 Project를 생성하였다. Spring Boot DevTools Spring Web Thymeleaf Spring Data JPA Lombok MySQL Driver ++ 추후 Google OAuth2 로그인을 위한 Spring Security도 Dependency를 추가 설정해주었다. 해당 부분은 build.gradl의 dependencies에 추가한 뒤 재빌드를 해주면 된다. 1. 빌드 'Build -> Build Project'를 ..
[Elasticsearch] Nginx 로그 Fluentd를 통해 Elasticsearch로 보내기 Nginx의 로그를 Fluentd를 통해 취합하고, 이를 ElasticSearch로 보낸 다음 Kibana에서 Nginx의 Access Logs를 Dashboard로 시각화하여 확인할 수 있다. 실습 환경 - OS : CentOS7 - Container Runtime : Docker - Tool : docker compose [도구 소개] - Nginx 웹 서비스이며 리버스 프록시로써 많이 사용된다. - FluentD Log(데이터) 수집기(Collector)라고 생각하면 된다. Fluentd로 전달된 데이터는 ‘tag, time, record(JSON)으로 구성된 이벤트로 처리되며, 원하는 형태로 가공되어 다양한 목적지 (S3, ElasticSearch, ..)로 전달될 수 있다. 만약 더 적은 메모리..
[Fluentd] 로그 수집 패턴, Fluentd 개념 정리 (조대협님 블로그글 참고하여 작성) 데이터 및 로그 수집 플랫폼으로 EFK, ELK 스택이 많이 사용되고 있다. EFK는 Elasticsearch, Fluentd, Kibana를 의미하며 ELK는 Elasticsearch, Logstash, Kibana를 의미한다. Logstash는 아키텍처 적응에 대한 유연성와 연동 솔루션에 대한 호환성을 강조하고 있기 때문에 타 솔루션과 연동이 강하고, Fluentd는 아키텍처의 단순성과 이를 기반으로 하는 안정성을 초점에 두고 있다. Fluentd를 이용한 로그 수집 아키텍처 [1] 기동되고 있는 서버에서 로그를 수집하고 중앙 로그 저장소로 전송 [2] 각 서버에서 Fluentd가 수집한 로그를 다른 Fluentd로 보내서 이 Fluentd가 최종적으로 로그 저장소..
[Terraform] terraform state mv 명령어 알아보기 및 활용법 Terraform은 tfstate 파일 기반으로 동작한다. 1. main.tf에 정의된 인프라스트럭쳐 2. tfstate 파일에 정의된 인프라스트럭쳐 위 2가지를 대조한 뒤, terraform plan 명령어를 수행하면 tfstate에 정의된 인프라스트럭쳐와 main.tf에 정의한 인프라스트럭쳐를 맞추려고 한다. 예를 들어, 예전에 Terraform 코드로 생성한 IAM User가 아래와 같이 존재한다고 가정해보자. resource "aws_iam_user" "user1" { name = "user1" } resource "aws_iam_user" "user2" { name = "user2" } IAM User : user1, user2가 존재할 것이다. 이 상태에서 user1, user2를 유지하되 c..

반응형