Dev

Dev/인프라

nGrinder 이용한 서버 성능 테스트

목차: 1. 사용 이유 2. nGrinder란 3. nGrinder vs 다른 툴 4. 내용, 성과 사전지식: https://choibulldog.tistory.com/61 서버 성능 테스트의 종류와 필요 지식 서버 성능 테스트에 대해 공부한 내용이다. 목차: 1. 서버 성능 테스트의 종류 2. 주요 용어 3. 좋은 서버 성능이란 1. 서버 성능 테스트의 종류 서버 성능 테스트(Performance Testing)에는 하위에 여러 choibulldog.tistory.com 1. 사용 이유 북클럽 프로젝트를 공개할 시점이 됐다. 그래서 내 서버가 대략 어느정도 규모의 트래픽을 감당 가능한지 알고싶었다. 내 서버의 성능을 알고 있어야 나중에 사람들이 많아져도 대응할수 있기 때문이다. . . . 사실 나는 a..

Dev/Spring

Controller와 Service의 역할에 대한 고민

이 글은 정답이 아닌 개인적인 저의 생각 정리입니다...! . . . 고민 개발을 하다보면 계속 Controller와 Service의 역할에 대한 의문이 들었다. Controller가 Service에 있어야할 비즈니스 로직을 가지고 있게 된다고 생각했기때문이다. (내가 그렇게 했기때문에 그런거지만... ㅠㅠ) 실제로 내가 겪은 구체적인 상황: 어떤 컨트롤러의 post 요청에서 A,B,C 엔티티가 반드시 순서대로 생성된후 저장되어야 한다. (참조관계 때문에 그렇다) 기존에는 컨트롤러에서 A 엔티티 생성 -> AService.createA() 한 후 B, C도 동일한 과정을 거침. 이러니까 컨트롤러가 서비스의 역할을 해버린다고 생각함. 코드: //기존 코드 @PostMapping public Response..

Dev/개발일지

테스트 코드 리팩토링 해보자

테스트 코드를 잘 써야한다. 서비스 장애를 사전에 방지하고, 품질 좋은 코드를 만들게 되며, 시간을 꽤 들여서 테스트 코드를 작성해도 결국 나중에는 그게 시간을 아끼도록 해주기 때문이다. 무엇보다 중요한건 그래야 면접관이 좋아한다. 그걸 나도 아는데, 솔직히 테스트 코드 쓰는 시간을 좋아한다고는 못말하겠다... 그래도 개판인 내 테스트코드를 개선하는 시간을 가져본다... 솔직한 내 현재 상황: 1. 테스트 클래스 통째로 주석처리함 요구사항 빨리 개발해서 쳐내다가 너무 많이 기능이 추가되고 기획이 수정되서 일부 테스트 통과 안되서 걍 편하게 ctrl + A -> ctrl + ? 눌러버림 마지막 양심으로 postman 보면서 수작업 테스팅함 2. 근거없이 오직 @SpringBootTest 통한 통합 테스트만..

Dev/개발일지

DB 구조 변경과 데이터 옮기기

테이블 구조를 변경하였다. 이미 저장된 데이터를 유지하면서 변경된 데이터를 옮기는 작업을 했다. 왜 바꿨냐면, 제3정규화를 위반하여 중복되는 데이터가 많을것으로 생각했기 때문이다. book 테이블은 회원이 고유하게 소유하는 책이다. 책 isbn, name 같은 정보 저장 말고도, 다 읽은, 읽는 중, 읽고싶은 등의 정보를 저장하고, 기획상 book이 post를 여러개 갖고 있어서 회원의 post들 테이블에 접근할때 처음 구분을 해주는 역할을 해준다. 구조 변경 전에 처음 설계할때는 사실 중복될것을 몰랐던건 아닌데, 같은 책 정보 몇개 들어온다고 크게 문제될까? 라고 생각했다. 어차피 별로 중복이 많을것같진 않은데 구조가 복잡해지는게 싫었다. 그런데 개발중에 쌓인 테스트 데이터를 보면서 생각해보니, 사실 ..

Dev/개발일지

AWS beanstalk에서 RDS 사용하려고 삽질

beanstalk을 쓰면 업데이트 할때마다 구성요소를 갈아 치운다. 그래서 따로 돌아가는 RDS를 beanstalk으로 생성한 ec2와 직접 연결해줘야한다. 민감한 정보(db/aws configuration)를 깃헙에 그냥 올리면 안되니까, beanstalk 쓰기 전처럼 그냥 ssh 접속해서 인스턴스에 application.yml을 프로파일 구분해서 만들면 되지 않을까? 하고 생각없이 작업하고있었는데, 이 글 맨위에 적어놓은게 생각났다 아 근데 이거 어차피 다 날리는데...? 다른 방법을 찾아봐야했다. 좀 보다보니까 구글에 찾아봐도 잘 나오고, 공식문서에도 나와있다 https://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/java-rds.html Ama..

Dev/Spring

[Lombok ] 클래스 단위로 @Builder 사용시 주의점

클래스 단위로 @Builder 사용시 필드를 전부 초기화 하지 않으면 예상하지 못한 일이 생길수도 있다. @Entity @Builder public class Book { @Id @GeneratedValue @Column(name = "book_id") private Long id; @Column(name = "book_name") private String name; @Column(name = "book_isbn") private String isbn; @Enumerated(EnumType.STRING) @Column(name = "book_category") private BookCategory category; @OneToMany(mappedBy = "book") private List posts ..

Dev/git(hub)

gitignore 반영안됨 문제 해결

분명히 application.properties 무시하라 했는데 깃헙에는 반영이 안됐다. 캐시가 문제된거라 한다. git rm -r --cached . git add . git commit -m "fixed untracked files" 이렇게 쳐서 다 지우고 다시 git add -A 한뒤 커밋하고 푸시하면 된다. 근데 위에 저거 치기전에 필요한거 커밋안해놓으면 다 날아간다. 조심조심

Dev/Spring

Servlet 서블릿에 대하여

Servlet- 서블릿은 예전에 스프링같은 편리한 프레임워크를 사용하기전 사용했다고한다. 서블릿의 역할 서블릿은 프로그래머가 핵심적인 코드만 작성하도록 도와준다. 의미있는 비즈니스 로직 외에도 저런 수많은 작업을 처리해줘야 한다. 연결하고 파싱하고 연결끊고... 이런걸 전부 한땀한땀 하기에는 너무나도 힘들다. 난 대학에서 네트워크 시간에 http connection을 만들고 파싱하고 이런걸 해봐서 이 고통을 이해한다. 그게 싫었던 사람들은 서블릿을 만들어냈다. 스프링부트는 기본 내장 was로 톰켓을 사용한다. was로 http 요청이 들어오면 was는 response와 request 를 생성하여 서블릿컨테이너에서 싱글톤으로 관리되는 서블릿 객체에 넘겨준다. + 동시요청에 대비해 멀티쓰레딩을 이용해 서블릿..

ChoiBulldog
'Dev' 카테고리의 글 목록 (2 Page)