분류 전체보기 9

01 / JVM 메모리 영역, Servlet, 스프링 Bean

JVM 메모리 영역메서드 영역클래스가 로딩될 때 할당된다패키지, 클래스, 인터페이스, 필드, 생성자, 메서드, 변수 등을 저장모든 스레드가 공유Heep 영역런타임 시에 동적으로 할당new 키워드로 생성된 객체와 배열에 저장되는 영역garbage collector가 참조하지 않는 메모리를 제거stack 영역스레드가 시작될 때 할당지역변수, 파라미터, 리턴값, 연산에 사용되는 값이 생성되는 영역메서드를 호출할 때마다 개별적으로 스택이 생성되며 종료시 해제선입선출   Servlet서버 측에서 HTTP 요청을 처리하고 클라이언트에 응답을 반환하는 Java 기반의 프로그래밍 기술웹 애플리케이션의 비즈니스 로직을 구현하는데 주로 사용된다 Java 지원 웹 서버 또는 서블릿 컨테이너(Tomcat, Jetty 등)에서..

Study/JAVA 2024.09.26

IT 도서 읽기 프로젝트 첫번째 <소프트웨어 장인>

산드로 만쿠소권오인 옮김, 길벗 출판사  문장 줍기  - 소프트웨어 장인정신은 마스터가 되어가는 긴 여정이다. 소프트웨어 장인정신은 소프트웨어 개발자가 스스로가 선택한 커리어에 책임감을 가지고, 지속적으로 새로운 도구와 기술을 익히며 발전하겠다는 마음가짐이다. 소프트웨어 장인정신은 책임감, 프로페셔널리즘, 실용주의 그리고 소프트웨어 개발자로서의 자부심을 의미한다. (p.57) - 다른 사람을 어리석다고 단정짓기 전에, 나 자신이 그렇게 훌륭하지 않을 수도 있음을 받아들여야 한다. 훌륭한 개발자는 다른 어떤 개발자가 보더라도 이해할 수 있는 코드를 작성한다. 페어 개발자가 나의 작업 내용에 동의하지 않거나 무엇을 하는 건지 이해하지 못하고 있다면 좋은 토론 기회로 삼아야 한다. 새로운 것을 배우거나, 색다..

기타 2024.09.20

Given-When-Then 패턴으로 단위 테스트

단위 테스트✔️ 프로젝트에 필요한 모든 기능에 대해 각각 독립적인 테스트를 수행하는 것✔️ 특정 부분, 메서드나 클래스 단위로 테스트를 진행해서 해당 기능이 의도한 대로 작동하는지 확인하는 절차    F.I.R.S.TFast : 테스트는 빠르게 진행 되어야 하고, 개발 속도에 영향을 받지 않음.Independent : 각 테스트는 독립적이어야 하고 다른 테스트에 의존하지 않아야 하며, 순서에 상관없이 실행될 수 있어야 함Repeatable : 어떤 환경에서나 동일한 결과를 내야 하고 반복 실행에도 일관된 결과가 도출되어야 함Self Validating : 테스트 결과가 성공인지 실패인지 스스로 판단할 수 있어야 함Timely : 테스트는 코드를 작성하기 전, 혹은 코드 작성과 동시에 이루어져야 함 ➡️ ..

Study/Spring 2024.09.13

JaCoCo 테스트 리포트 만들기

JaCoCo- Java Code Coverage- 코드 커버리지를 측정하기 위한 라이브러리- 코드베이스에서 테스트 되고 있는 부분과 테스트 되지 않고 있는 부분을 리포트로 확인 가능- 일정 커버리지 이하는 빌드 되지 않게 limit 해놓을 수도 있다- 프로젝트의 테스트를 효율적으로 관리 가능함        설정은 어렵지 않았다build.gradle에 플러그인 추가해주면 끝! 의존성 추가는 필요 없음여기서 다양한 설정도 가능하다   1, 플러그인 추가plugins { id 'jacoco'}  2, Jacoco 버전 설정jacoco { toolVersion = "0.8.8"}  3, 리포트 설정tasks.jacocoTestReport { dependsOn tasks.test // 테스트가 실..

Study/Spring 2024.08.27

공공데이터포털 오픈 API 인증키 오류

저번주부터 오픈 API를 활용한 기능을 개발하기 시작했다내가 해야 할 기능은 공공데이터포털의 오픈 API를 활용한 사업자 진위여부 확인!기존의 파트너 회원가입과 사업자 등록의 워크 플로우가 달라져서 조금 헤매니까 매니저님이 '시퀀스 다이어그램'이라는 걸 그려보라고 추천해주셨다노션의 간편한 기능을 사용해 시퀀스 다이어그램을 그렸고, 그리고 나니까 어떤 것들이 필요한지 깔끔하게 정리된 것 같아서 작업하기가 수월했다     코드 작성까지는 그다지 어렵지 않았는데 포스트맨과 스웨거로 로컬 테스트를 하는 과정에서 큰 난관에 봉착했다어떤 수정을 해도 '등록되지 않은 인증키 입니다'라는 에러 메세지가 나오는 것 😶이 기능을 개발하면서 rest template을 사용해서 서버와 통신하는 것을 처음 해보았기 때문에 r..

개발일지 2024.08.25

MVP단 끝! 테스트 커버리지 80%를 향해서

지난 주 금요일 팀 프로젝트 MVP단이 마무리 되었다!팀 프로젝트 발표 시간이 있었고 발표 직전까지 정말 바쁜 시간을 보냈다 그래도 바쁘지 않은 것보다는 바쁜 게 무조건 더 좋다는 생각으로 힘들지만 뿌듯한 마음으로 마무리를 지었다 하지만 끝이 아니라는 것! 우리 팀은 여기서 멈추지 않고 프로젝트를 계속해서 디벨롭 시키자는 계획이 있었기 때문에 이제는 잠깐의 정비 시간을 갖고 '페이즈2'로 넘어가기 위해 새로운 준비를 하고 있다 이 과정에서 단위 테스트를 마무리하게 되었는데, 테스트 코드를 작성하면서 단위 테스트가 왜 중요한 과정인지 알게 되었다첫번째로 팀원들의 설계 패턴을 파악할 수 있는 계기가 되었고 덕분에 다른 사람의 코드를 읽으면서 학습에 상당히 많은 도움이 되었다두번째, 해당 기능의 목적을 분명하..

개발일지 2024.08.21

테스트 주도 개발 방식 (TDD)

TDD (Test-Driven Development) ✔️ 테스트 주도 개발로 개발 전 테스트 코드를 먼저 작성하는 개발 방법론 ✔️ 애자일 개발 방식 중 하나로 코드 설계 시 단계적 목표를 가지고 개발을 진행  TDD 방식의 개발 순서1, 테스트 코드 작성 ▪️  요구사항에 따라 테스트를 먼저 작성한다 ▪️  비즈니스 로직이 없어 테스트가 실패하게 된다 2, 코드 작성 ▪️  테스트가 성공할 수 있도록 필요한 최소한의 코드 작성 3, 테스트 반복 ▪️  테스트를 다시 실행하여 성공 여부를 확인햔다 ▪️  성공할 때까지 반복한다 ➡️ 이런 방식으로 프로젝트를 점진적으로 개발 TDD 방식으로 개발하는 이유 ▪️   테스트 코드를 먼저 작성하기 위해서는 요구사항 분석 및 이해가 필요         →  개발..

Study/Spring 2024.08.11

rest template 적용에 관한 고민 <팀 프로젝트 개발 일지>

저번주부터 판매자 관련 API 개발을 시작하면서 팀원들과 의논 끝에 서버를 두 개로 분리하기로 결정했다.구매자 서버와 판매자 서버로 분리를 했는데, 서버를 두 개로 나누었을 때 rest template을 적용시켜 데이터 통신을 한다고 알고 있어서 각자 이것과 관련된 개념에 대해 공부하고 리팩토링을 시작하기로 했었다.  어느 정도 공부를 한 뒤에 다시 회의를 시작했을 때 의견이 두 갈래로 나뉘게 되었다.1, 같은 DB를 쓰기 때문에 데이터베이스에서 직접 조회를 하자.    - 이 경우 서버 간 결합성이 높아져서 유지보수가 힘들어질 것으로 예상됨.    - 하지만 지금 상황에서는 간단한 방법임.2, 추후 프로젝트 확장을 생각했을 때 미리 rest template을 적용시키자.    - 유지보수가 간편해진다...

개발일지 2024.08.07

협업, 협업, 협업! <깔끔한 방> 팀 프로젝트 개발 일지

팀 프로젝트 첫째주가 정신없이 지나가고 어느새 둘째주도 마무리가 되어간다.시작하기 전에는 '4주'라는 시간이 꽤나 넉넉한 시간이지 않을까 싶었는데, 지금 시점에서는 전혀 그렇지 않다고 매일매일 느끼는 중이다.     협업과 협업과 협업팀 프로젝트 라는 건 기술적인 지식도 중요하지만 '소통'과 '협업 툴' 사용도 굉장히 중요한 요소 중 하나이다.첫째주는 기획과 협업 방식에 대해 아주 많은 이야기를 나누었고 툴을 직접 사용하면서 함께 공부하는 일주일을 보냈다.우리가 선택한 협업 툴 중 하나는 '깃허브 프로젝트'가 있는데, 이슈를 만들고 그 이슈를 진행할 브랜치를 만들고 진행 상황을 프로젝트 보드로 공유하는 방식을 사용하고 있다.이렇게 깃허브 프로젝트를 사용하면 프론트 엔드와 백엔드의 진행상황 공유도 쉬워지고..

개발일지 2024.07.31