[Spring] Spring 프로젝트 SonarQube 연동
·
Spring
최근 구현한 게시판 프로젝트가 있다. 이 프로젝트에서 사용되는 메서드에는 대부분 테스트 코드를 작성했다.  이 테스트 코드가 내 실제 프로덕션 코드를 얼마나 커버했는지 나타내는 코드 커버리지를 수치화하는 기술인 SonarQube를 사용해 얼마나 커버했는지 확인해 보자.  참고로 SonarQube는 코드 커버리지뿐만 아니라 Security Hotspot와 같이 보안적으로 문제가 될 수 있는 부분, 유지보수 측면에서 불리할 수 있는 부분 등의 정적 코드 분석 기능도 보유하고 있다.   SonarQube 설치 및 설정 난 HomeBrew를 사용해 SonarQube를 설치했다.brew install sonarbrew install sonar-scanner 설치가 완료되었으면 실행한다.brew services s..
[백엔드] 코드 커버리지
·
백엔드
코드 커버리지 코드 커버리지란 화이트 박스 테스트의 일종으로 Code Coverage 말 그대로 ‘코드를 얼마나 커버하고 있느냐’를 수치로 나타낸 것이다.  정확한 정의는 소프트웨어 테스트에서 테스트된 코드의 비율이다.  만약 내가 작성한 메서드의 테스트 코드가 작성되어 있다면 코드 커버리지가 상승하는 것이다.  그리고 코드 커버리지가 높을수록, 테스트 코드가 프로덕션 코드 전반을 잘 검사하고 있다는 의미이다.  현업에서는 보통 75~80% 이상의 코드 커버리지를 목표로 설정하는 경우가 많다. 이는 코드의 신뢰성과 안정성을 위해서이다.  다만, 100% 코드 커버리지가 반드시 완벽한 테스트를 의미하지는 않는다. 테스트의 품질과 효율성 또한 중요하다.   코드 커버리지 측정 기준 라인 커버리지 실행된 코드..
[개발 일기] 2025.01.08 - OSI 7계층 (네트워크 계층)
·
개발 일기
개요 어젠 2 계층인 데이터 링크 계층을 했으니까, 오늘은 3 계층인 네트워크 계층을 정리할 차례이다.  자 드가자.   네트워크 계층의 역할 2 계층인 데이터 링크 계층의 주요 역할은 MAC을 사용해 특정 컴퓨터와 통신하는 것이었다.  그리고 이러한 통신에 사용되는 MAC은 주로 스위치의 MAC 테이블에 저장된다. 이러한 형태의 네트워크는 대부분 유선으로 연결된 경우를 말한다.  하지만 완전히 다른 네트워크를 가진 컴퓨터와 통신을 시도한다면??  내가 만약 구미에 있지만 서울에 있는 철수에게 메시지를 보내는 것과 같이 통신을 시도하려면 어떻게 해야 할까?  이러한 방법을 알려주고, 역할을 수행하는 것이 네트워크 계층의 역할이다.   라우팅 라우팅은 데이터를 목적지까지 전달하기 위해 필요한 구체적인 경로..
[개발 일기] 2025.01.07 - OSI 7계층 (데이터 링크 계층)
·
개발 일기
개요 오늘은 OSI 7 계층에서 2번째 계층인 데이터 링크 계층 차례이다.  드가자.   데이터 링크 계층 데이터 링크 계층은 물리 계층과 네트워크 계층으로 받은 패킷을 다음 목적지까지 안전하게 전달하는 역할을 한다.   프레임 데이터 링크 계층에서 사용되는 기본 데이터 유닛이다.  프레임의 구조는 다음과 같다. 목적지 주소데이터를 받을 장치의 MAC 주소(Medium Access Control address)참고로 MAC 주소는 고유한 주소임. 지구상에 있는 모든 컴퓨터는 MAC 주소가 다름 출발지 주소데이터를 보낸 장치의 MAC 주소 데이터실제 전송하려는 정보이는 상위 계층에서 전송된 데이터(예: IP 패킷)를 포함 FCS프레임의 오류 검사를 위한 정보수신자는 FCS 값을 이용해 데이터가 전송 중 손..
[개발 일기] 2025.01.06 - OSI 7계층 (물리 계층)
·
개발 일기
개요 이전까지 OSI 7 계층은 단순히 전공 공부할 때나 정처기 준비할 때 달달 외우기만 했다.  각 계층이 어떤 역할을 가지고 있는지 말은 할 수 있지만, 이건 완전히 이해한 상태에서 설명한 것이 아니라 그냥 시험용으로 외운 글을 말하는 느낌이다.  그래서 이번 기회에 각 계층을 하루에 하나씩 공부할 생각이다.   물리 계층 물리 계층은 OSI 7계층에서 1 계층으로 데이터를 전송할 때 가장 마지막으로 거치는 계층이고, 전기신호를 수신할 때 가장 처음으로 지나는 계층이다.  그렇기 때문에 물리 계층은 전기신호를 컴퓨터 내부에서 사용 가능한 데이터로, 컴퓨터 내부에서 사용되는 데이터를 전기신호로 변환하는 역할을 수행하기도 한다.  채팅 애플리케이션을 예로 들면, 사용자가 메시지를 작성하고 ‘전송’ 버튼을..
[개발 일기] 2025.01.05 - 자바 객체 락 (synchronized)
·
개발 일기
개요 우리가 보통 동기화 환경을 구축할 때, 아래의 예제 코드와 같이 동기화 환경이 설정된 메서드에 진입하기 위해선 락을 획득해야 한다고 한다. public OrderService { ... public synchronized void createOrder(OrderCreateRequest request) { // 주문 생성 & 재고 차감 로직 } ... } 그렇다면 이 락이 뭐고, 도대체 어디에 있는지에 대해 알아보자   락 락(Lock)은 동기화를 구현하기 위한 기술로, 여러 스레드(사용자)가 공유 리소스에 접근할 때 데이터의 무결성을 보장하기 위해 사용된다. 락은 동시에 하나의 스레드만 특정 리소스에 접근할 수 있도록 제어하는 역할을 한다.  쉽게 설명하면 데이..