8월 3주차 WIL_06

Jobmania·2022년 8월 21일
0

항해 과정 기록

목록 보기
6/19

FE, BE 협업과정에서 느낀점들.....

FE, 구조를 잘 모르니 협업시 조언을 못했다. 또한 해당 주차에서 많은 내용을 습득하지 못했다고 생각한다. 하지만 그 과정을 통해 API명세서의 중요한 점과 기본기를 다질 수 있는 좋은 시간이었다고 생각한다. 내일 시작하는 클론주차에서 최대한 Redis를 구현하여 서버 속도를 상승시켜 보겠다. !!!

220814


S3 이미지 업로드 및 삭제
https://doing7.tistory.com/47


220815

기억보단 기록을

Session, JWT Refresh Token db에 저장하면 결국 DB를 확인하는 건데 차이가 없지 않냐.?
IF) 만약 서버가 날라간다면
JWT는 로그인이 된다.(Access토큰키가 만료되지 않았다면...)
Session은 로그인이 안된다.(서버에서 저장하고 있기 때문)

소셜로그인 Oauth2 사용하기..

  1. 카카오
    프론트엔드에 버튼에 로그인할 인가 코드 주소

Response
기입한 주소 + ?code=${AUTHORIZE_CODE}



Oauth, 데이터 정규화,
스프링 기본에서 네이버 리다이렉트 확인해보기..
나는 kakaomember 엔티티를 한개더 만듬.


프론트엔드
카카오버튼으로 카카오서버에 인가토큰 Request

https://kauth.kakao.com/oauth/authorize?client_id=2e0492dd18239e1ace5c0d238be87e92&redirect_uri=15.165.203.140/api/kakao/callback&response_type=code

여기 url 부분을 수정


UUID.randomUUID().toString() 랜덤 숫자부여.


로그아웃에 대해서..
https://linkeverything.github.io/springboot/kakao-login-3/


220816

기억보단 기록을


오늘 한일
1.게시글작성 api수정 >> 완료...
2.게시글작성 멤버컬룸추가 ( 연관관계 추가)
@AuthenticationPrincipal UserDetailsImpl userDetails
인증 정보를 옮길땐 @AuthenticationPrincipal 어노테이션 붙여아함..
3.회원가입시 명세서
-> 정규식 표현 수정해야함..

  1. MemberID Column에 추가..(대소문자 구분가능)
    columnDefinition = "varbinary(128)

예시 작성법)

@Column(nullable = false, columnDefinition = "varbinary(128)")
private String memberId;


@ModelAttribute (매핑)
https://minchul-son.tistory.com/546
파일이랑 스트링내용을 같이 Request..
@Valid


인프런 강의 추천
https://www.inflearn.com/roadmaps/373


@CollectionTable 에 대해 검색해보자..
.. 한 게시글에 여러개의 이미지를 올릴때...
OneToMany(조인컬럼을 여기에 달아준다)
@CollectionTable 엔티티를 생성안하고


야자반 내용~

유지보수단계의 고도화.
라이트하우스 // 렌더링시간측정
제인리턴 // 리스폰스 측정


테스트코드를 무조건짜보자...
스프링테스트부트
우선은 서비스로직 테스트코드 짜보기..


짜는순서
dummyDate넣기 -> Mock
성공 및 실패에 대한 두가지


코드리뷰

  1. Setter 쓰지말고 Builder를 사용해서 값을 넣어라..
    Setter 아무데서나 접근이 가능해서...
  2. 메서드 안에서만 Null을 사용한다..
    Null이 계층간 이동을 하면 안된다.
    만약 Null이 리턴되면 NullPointExcepiton이 발생함!!
    그래서 Return에는 Null이 안들어가게 해야한다..

그래서 Null을 넣지말고
오버로딩을 사용(덮어쓰기)
String(a,b)
String(a)

즉 .orElse(null);을 쓰지말자!! 제거하자!!!
또는 CustomExcetion 만들자...

Transactional fileDelete 붙일 필요가 없음..
한 Trnascational 내에 존재하기 때문에~


자바 ddd


IAM 노출시 권한설정을 보면 막기때문에 (메일을 확인해보면 안다)
그냥 IAM 삭제하고 다시 만들자..


220817

API설계할때 프론트엔드와 세세하게 ..
Request, Response를 정하고 ...


https://dev-pengun.tistory.com/entry/Spring-Boot-CORS-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0


S3
게시글 처음 이미지 없고, 이후 수정할때 이미지를 넣을때 예외처리를 넣어야 된다. 전체 조회


SQL BENCH.. 차이~!!
Drop
Truncate


포트포워딩 확인하기..


Athuorization
*을 안먹힌다.


쿠키,세션 jwt 차이 알고가기


닉네임은 유효성검사에서 제외 ...


objectMetadata.setContentType(multipartFile.getContentType()); // 이게 머지? : 파일타입
InputStream inputStream = multipartFile.getInputStream(); // 이게 머지??? : 실제 데이터를 넣어준다~


URL 한글변환 디코딩 및 인코딩
https://solbel.tistory.com/1508


++++ <JPA영속성컨테이너>

스프링의 MVC구조 : MODEL(Entity), VIEW(Templates), CONTROLLER / 설계패턴


Entity 설계 잘하는 방법?
https://velog.io/@kangsan/%EC%A2%8B%EC%9D%80-Entity-%EB%A5%BC-%EC%84%A4%EA%B3%84%ED%95%98%EA%B8%B0-%EC%9C%84%ED%95%9C-%EA%B0%9C%EB%85%90%EB%93%A4


220818


S3 이미지 업로드
https://www.sunny-son.space/spring/Springboot%EB%A1%9C%20S3%20%ED%8C%8C%EC%9D%BC%20%EC%97%85%EB%A1%9C%EB%93%9C/

S3 이미지 업로드 및 삭제
https://doing7.tistory.com/47


a반 여러분, API문서는 협업에서 가장 중요한 협업 문서 입니다.
따라서 꼭 프론트/백 함께 설계하시고, req/res 데이터는 예시로라도 자세히 적어두시길 바랍니다. 또한 변경 사항이 있을 때 항상 공유해서 원활한 소통으로 리스크를 줄여볼 수 있도록 하시면 개발에 집중할 수 있을 것 같습니다. :미소짓는_얼굴:
프론트/백 모두 새로운 기능 구현도 좋지만, 기존에 구현해둔 코드에 대해 꼭 서로 질문하고 리뷰해보시길 바랍니다. git 활용도 이번 프로젝트에서 연습하셔서 다음 클론 프로젝트 때 새로운 기능 구현해보는 시간을 확보해 보세요.
속도가 빠른 팀원은 다른 팀원들의 문제를 함께 고민하고 해결해도 좋겠습니다.
늘 말씀드리는 것처럼 서로 얘기하는게 정말 큰 도움이 됩니다.
현업에서도 수많은 개발 스터디가 있고, 유지되는 것이 증거이기도 하겠네요!
다들 SA를 잘 작성해주셔서 공통적으로 드리고 싶은 내용이 더 많아 메세지 남깁니다.


s3 이미지 이름 랜덤화..


jwt 토큰
https://bcp0109.tistory.com/301.

-+---------
REST
https://www.youtube.com/watch?v=RP_f5dMoHFc


220819


클론코딩주차 시작
코드에서 코드가 똑같다면 좀 ㅎㅎ;;;;;;;


게시글의 카테고리를 @Enumerated 로 해보기
저장할때 EnumType.ORDINAL,STRING 에 따른 차이점 알아보기
-> 게시글 저장할때 카테고리로 숫자(0,1)로 넣어줘서 저장해보기, GAME,MUSIC처럼 Enum으로 넣어서 save해보기
카테고리, 남녀 , 중간에 변경불가 .. 그안에 있는 값만 사용할 수 있다.
db에
Ordinal는 id가 들어감
String으로 하면 앞의 String이 들어감..


회원 빙회원
게시글 전체게시글


Refresh 조금ㄷ ㅓ알아보자 ...


@Enumerated


email 및 nickname에 영어 소문자만 가능하게 하기... columnDefinition = "varbinary(128)"


로깅
스웨거
레디스
QueryDsl


검색
MVC 퍼시던트 계층, 비즈니스 계층
예외처리에 대한 객체 지향 EXCEPTION HANDLER
레디스, 웹소켓(실시간채팅)


++ 웹소켓 ,웻RTC 실시간 (화상회의)


220820


클론코딩주차 시작
코드에서 코드가 똑같다면 좀 ㅎㅎ;;;;;;;


게시글의 카테고리를 @Enumerated 로 해보기
저장할때 EnumType.ORDINAL,STRING 에 따른 차이점 알아보기
-> 게시글 저장할때 카테고리로 숫자(0,1)로 넣어줘서 저장해보기, GAME,MUSIC처럼 Enum으로 넣어서 save해보기
카테고리, 남녀 , 중간에 변경불가 .. 그안에 있는 값만 사용할 수 있다.
db에
Ordinal는 id가 들어감
String으로 하면 앞의 String이 들어감..


회원 빙회원
게시글 전체게시글


Refresh 조금ㄷ ㅓ알아보자 ...


@Enumerated


email 및 nickname에 영어 소문자만 가능하게 하기... columnDefinition = "varbinary(128)"


  • 테스트코드
    +로깅
    +스웨거
    +레디스
    +QueryDsl (동적쿼리)
    +xss보안

검색
MVC 퍼시던트 계층, 비즈니스 계층
예외처리에 대한 객체 지향 EXCEPTION HANDLER
레디스, 웹소켓(실시간채팅)


++ 웹소켓 ,웻RTC 실시간 (화상회의)


git hub 협업하기

https://gmlwjd9405.github.io/2017/10/28/how-to-collaborate-on-GitHub-2.html


CI/CD

https://seosh817.tistory.com/104


Redis. aws 에서 어떻게 구성해야되는지 ..

서버2대를 두고 한쪽은 배포, 한쪽은 캐시서버로 놔둬서
실행한다면 글로벌캐시이며 프론트에서는 따로 작업이 필요없는거

추가적으로 DB를 한번만 확인해야하는데
DB조건을 수립하는 방법??
CRUDrepository

처음에는 db에서 리프레쉬 토큰을 저장하고 꺼낸다...
이후 재 로그인시 캐시에서 꺼내서 성능개선..


220822

vmware workstation이란? 가상머신..


ex)
application-aws.properties만 사용하고 싶다면 활성화된 프로파일에서 \
aws만 넣으면 실행시키고 싶은 properties만 분리 가능


레디스 실행 추가!
redis-5.0.5$ redis-cli


ec2 에서 연결이 되지않는다면 properitese. 에서 localhost 서버 ip를 넣어보기..


properties.별로 나눠서 profile별로 db및 //


  • top를 통해 cpu, memory 자원소모 확인가능(프로세스 사용량 확인하는 게 중요!!)
    그래서 docker에서 Redis 자원 소모량, Local에서 Redis 자원소모량 비교를 한다면!!
    DOCKER를 왜 쓰는지 알 수있을 것이다 .!!

Spring boot서버에 1만개/sec의 Request를 요청하였을때? free-tier서버가 견딜수 있을까?
CPU 80% 이상일때 다운이 된다.
++오토스케일링
60%이상 일때 똑같은 서버 한개를 더 띄운다.

++ 무중단 배포
서버가 죽기전에 다른 서버를 살린다..


  • 백엔드의 소양!!
    대규모 트래픽을 어떻게 처리하는가!!
    대규모 들어온다면 어떻게 대처해야 해야할까??

@SLF4J 란?

profile
HelloWorld에서 RealWorld로

0개의 댓글