전체 글

Logback이란?스프링 부트에서 기본으로 사용하는 로그 프레임워크 SLF4J : 로그 인터페이스 (API)Logback : 로그 구현체 (실제 동작)Log4j2 : 다른 로그 구현체 스프링 부트는 별도의 설정이 없으면 SLF4J + Logback 조합으로 로그를 구성스프링 부트에서 Logback 사용logback-spring.xml 파일 추가logback 설정 파일을 추가해준다.  facility : 로그가 어디에서 발생했는지suffixPattern : 로그를 어떻게 남길 건지 패턴 지정 propertySYSLOG_HOST : 로그 서버 IP 주소SYSLOG_PORT : 포트 번호 ${SYSLOG_HOST} ${SYSLOG_PORT} ..
AOP란?AOP는 관점 지향 프로그래밍이라고 불리며, 핵심 로직과는 별개로 반복되는 공통 관심사를 분리해서 관리할 수 있게 해주는 프로그래밍 패러다임 대표적인 공통 관심사 예시 : 로깅, 트랜잭션 처리, 보안 체크, 성능 측정  ❓ 왜 AOP를 쓸까?기존 코드에 이런 공통 기능들을 일일이 추가하면 코드가 지저분해지고, 유지보수도 어려워진다.AOP를 쓰면 이런 기능들을 한 곳에서 정의하고, 필요한 곳에 자동으로 적용할 수 있어서 코드가 더 깔끔하고 재사용성도 높아진다.=> 여러 클래스에 공통적으로 작업을 적용할 때 사용한다.   ✅ 핵심 개념 간단 정리Aspect: 공통 관심사를 모듈화한 것 (예: 로깅 기능)Join Point: Aspect를 적용할 수 있는 지점 (예: 메소드 호출 시점)Advice: ..
4.7 ~ 4.11 벌써 20주차... 이거 맞아요?이번 주에 진행한 내용이번 주에는 수요일에 중간 발표가 있었다. 원래는 없었는데 생긴 거라고..ㅠ ㅠ 중간 발표는 내가 맡아서 하기로 했다. 발표하는 사람이 발표 PPT와 대본을 작성하는 게 나을 것 같아서팀원들한테 프론트엔드 구현을 맡겨두고 월요일에는 오전까지 프론트 구현하고, 오후에는 발표 자료를 만들고 대본을 작성했다.화요일에 발표 연습을 오전, 오후 두 번 진행했다. 오전 발표 연습을 진행하고 강사님께 중간 발표 피드백을 받고, 피드백 기반으로 수정한 다음 오후에 연습을 빠르게 진행했다.우리는 마지막 순서였는데, 오전에 첫 연습이라 좀 길게 진행하다보니 우리 팀 발표할 시간이 없어서 ㅠㅠ 점심 먹고 오후에 첫 연습을 진행했다. 그래서 오후 연습..
3.31 ~ 4.4이번 주에 진행한 내용 월요일에는 요구사항 정의서를 작성하고, 두 번째 멘토링을 진행헀다.첫 번째 멘토링 때 아이스 브레이킹 겸 2시간 동안 멘토님과 수다 타임을 가졌기 때문에...이번 멘토링에서는 우리 프로젝트의 기획서와 요구사항 정의서, 그리고 아직 미완성된 화면 설계서를 보여드리고 피드백을 받았다. 현업과 비즈니스 위주로 멘토링을 진행해주셨고, 기능들을 추천해주고 구현 시 고려사항에 대해서 얘기해주셨다.AI 기능이 들어가면 좋을 것 같다는 멘토님 의견을 듣고 우리는 Q&A 게시판에 AI 답변 기능을 추가하기로 결정했다 !채팅방 관련해서도 많은 피드백을 주셨는데, 멘토님이 말씀하신 걸 듣고 나니 생각보다 채팅 기능이 어려울 것 같아서 걱정이다 ㅜ 화요일부터는 일주일 동안 피그마 화..
로그란?로그는 프로그램이 어떤 동작을 했는지 기록해두는 것에러가 났을 때 원인을 추적하거나, 정상적으로 동작했는지 확인하는 데 꼭 필요하다. 리눅스 시스템에서는 다음과 같은 명령어로 로그를 확인할 수 있다.systemctl status nginx # 서비스 상태 확인cat /var/log/syslog # 시스템 로그 확인Spring에서의 Logging스프링에서는 Logger를 사용해서 다양한 로그 레벨로 메시지를 기록할 수 있다.log.info("정상"); // 정상일 때log.error("에러"); // 에러일 때// 동작 상황을 모두 출력log.trace("trace : 동작 상황을 모두 출력(메소드 실행, 종료, 반복문 실행 등)");// 동작 상황을 모두 출력log...
CQRS (Command Query Responsibility Segregation)명령(Command)과 조회(Query)를 명확히 분리하는 아키텍처 패턴 Command데이터를 생성(Create), 수정(Update), 삭제(Delete) 하는 작업 Query데이터를 조회(Select)하는 작업   ✅ 장점부하분산조회 요청이 많을 경우, 쿼리 서비스만 스케일업/스케일아웃하면 됨커맨드와 쿼리를 같이 둔 경우, 불필요하게 커맨드 로직도 함께 리소스를 차지장애 분리쿼리에 장애가 발생했을 때도 커맨드는 계속 서비스 가능 CQRS 적용 방법단일 프로젝트 내에서 분리BoardCommandService: 게시글 등록, 수정, 삭제BoardQueryService: 게시글 목록 및 상세 조회 프로젝트를 완전히 분리bo..
3.24 ~ 3.28 드디어 최종 프로젝트 팀이 정해지고 최종 프로젝트를 시작하게 되었따 !! 처음 보는 사람들도 많을 줄 알았는데 맨날 보고 같이 밥도 먹던  친구들과 같은 팀이 됐다. 주변 팀들 구성을 보니까 최대한 친한 사람들과 같이 팀 구성을 하게 해주려고 노력하신 것 같다. 사실 나는 우리 기수에서 얘기를 한 번도 안 해본 분들도 있어서 처음 보는 사람들이 많았으면 좋겠다고 생각했는데.. 이 부분은 아쉬웠지만 그래도 지금 팀 구성도 좋아서 지금 팀원들과 열심히 할 예정이다.이번 주에 진행한 내용이번 주 월요일, 화요일에는 CICD 프로젝트로 진행했다. 저번 주 금요일에 빌드 + 배포에 필요한 yml 파일을 미리 작성해두고 진행했다.월요일에는 팀원들과 회의를 진행하면서 빌드를 어떻게 할지, 배포 ..
3.17 ~ 3.21 강사님께서 알려주시는 이론 수업이 드디어 끝났다...!짧은 기간 안에 너무 많은 정보가 들어와서 정리하기도 힘들고 모든 내용들을 다 습득하기도 어려웠지만그래도 나름 잘 따라갔던 것 같다.이제 최종 프로젝트만 남았다... 배운 내용들을 가득 담아  성공적으로 마무리하고 싶다 !!  이번 주에 배운 내용월요일에는 쿠버네티스와 같은 마이크로서비스 아키텍처에서 서비스 간 통신을 관리하고 제어를 쉽게 해줄 수 있는 istio에 대해서 배우고, MSA 데모 프로젝트를 가지고 실습을 진행하면서 어떻게 istio로 관리하는지를 배웠다.그리고 3계층 아키텍처 배포 실습을 진행했다. 회원 기능의 마이크로서비스를 개발해서 디플로이먼트로 배포하고, DB 서버를 올리고, ConfigMap 등을 작성하고 G..
Gateway에서 인가 처리JwtFilterspring cloud gateway에서 제공해주는 AbstractGatewayFilterFactory 필터를 사용해줘야 한다.import com.example.apigateway.utils.JwtUtil;import org.springframework.cloud.gateway.filter.GatewayFilter;import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory;import org.springframework.http.HttpCookie;import org.springframework.http.server.reactive.ServerHttpRequest;imp..
Eureka란?Spring Cloud Eureka는 넷플릭스에서 개발한 서비스 디스커버리 시스템이다.마이크로서비스 아키텍처(MSA) 환경에서 동적으로 서비스 등록 및 검색을 가능하게 해준다. 서비스 디스커버리란?마이크로서비스 환경에서는 서비스들이 동적으로 변경될 수 있으므로, 각 서비스의 IP 및 포트를 관리하는 중앙 레지스트리가 필요하다. Eureka Server: 서비스들의 정보를 저장하고 관리하는 레지스트리 서버 역할Eureka Client: 유레카 서버에 자신의 정보를 등록하고, 필요할 때 다른 서비스의 정보를 조회 유레카 서버에 등록만 잘 해놓으면 다른 서버의 IP를 알 필요가 없다 => 필요할 때 유레카 서버에서 받아가면 된다. 서버가 아무리 많아도 각자의 서비스를 개발하는 개발팀에서 유레카 ..
셰욘
seiyeon