질문 피드백 클래스 단위의 @Transactional 사용 저는 개인적으로 클래스 레벨에 Transactional을 사용하는 것을 선호하지 않습니다. 트랜잭션은 굉장히 비용이 큰 작업이고, 불필요한 트랜잭션으로 성능이 낮아지는 문제도 있지만 더 큰 문제는 의도되지 않은 트랜잭션으로 인해 데드락이 발생할 수 있다 라는 것이 생각입니다. 실제 현업에서 대규모 트래픽을 처리하기 위해 데드락이 발생하지 않도록 설계하는 것이 굉장히 중요한데요. 개발하는 과정에서도 이 기능에 데드락이 발생할 요소가 있을까? 트랜잭션을 꼭 잡아야 가능한 기능일까? 구조를 변경하여 락이 필요 없는 구조로 바꿀 수 없을까? 에 대해 끊임없이 고민하게 되는데, 이러한 고민을 하는 시점이 저는 메서드에 Transactional 처리를 하는..
우테코에서 찾은 나만의 효과적인 공부법 프로그래밍을 공부하면서 기존의 학습과 다른 생각을 가지게 되었다. 따라서 프로그래밍을 학습하기 전과 프로그래밍을 학습하면서 생긴 생각의 차이를 비교하며 시작해보려고 한다. 더불어 짧지만 혼자 프로그래밍을 공부할 때와 우테코에 와서 학습할 때의 달라진 모습에 대해서 생각해 보았다. 지금 나는 어떻게 공부하고 있는지, 앞으로 어땠으면 좋을지 정리하며 마무리하고자 한다. 기존의 학습 VS 프로그래밍학습 무언가를 배우는 것을 좋아하는 편이다. 여유를 가지고 관심 있는 것들을 배우는 것은 재미있다. 하지만 너무 시험이라는 항목으로 평가하는 것들이 많았다. 기존의 공부는 나에게 시험을 통과하기 위한 것이었다. 잘하고 실력이 있고, 퀄리티가 높은 것보다는 학습의 목적은 시험에 ..
[Auth] 인증과 인가 인증과 인가 인증(Authentication): 로그인 기능, 인증된 사용자인지 확인하는 것 인가(Authorization): 사용 권한이 있는지 확인하는 것 쿠키, 세션, 토큰 쿠키는 클라이언트 측의 저장소이다. 쿠키에 저장이 되면 쿠키는 서버 요청시마다 보내지게 된다. 탈취될 위험이 있어 보안적으로 중요한 내용은 저장하지 않는 편이다. 세션을 통한 인증은 서버측에서 세션저장소에 사용자를 등록하고 이것을 sessionId 값으로 관리한다. 클라이언트에 세션아이디를 알려주고 클라이언트는 세션아이디를 서버에 보내 사용자를 확인한다. 서버는 세션아이디를 가지고 세션저장소에서 인증정보를 확인한다. 사용자가 많아진다면 서버의 세션저장소의 부하가 발생한다. 서버는 토큰을 로그인한 사용자에..
[Q & A] 피드백 1 질문과 답변-1 Q. Void 타입으로 body없는 경우도 많이 리턴하나요?? 필요하면 void로 반환하기도 한다.(수정, 삭제가 제대로 됐는지 검증하는건 서버가 가져야 할 책임이지 클라이언트가 확인할 필요는 없다.) 보통은 빈 response body를 내려주는 경우가 많음. Q. Optional 사용에 대한 의견 쿼리 호출 횟수를 줄이는게 당연히 좋지만 그전에 읽기 좋은 코드를 작성하는게 먼저임 쿼리 한 번 더 호출했다고 서버 응답이 엄청 느려지고 그러진 않는다. 하지만 읽기 어려운 코드는 개발자가 수정하는데 많은 시간이 들기 때문에 더 큰 비용이 든다. optional은 외부와 통신하면서 null이 발생할 수 밖에 없는 상황이 있을 때 어떻게 처리할지 결정 할때만 사용합니다..
[테스트 작성하는 팁] 테스트는 상호 독립적으로 작성되어야 한다 공유하는 자원? Spring Bean, Database 등 테이블을 초기화한다. DB를 초기화 한다.(@Sql 어노테이션 등을 활용가능) 스프링 컨테이너를 초기화(Bean을 초기화하기 때문에 비싸다) SpringBootTest → 롤백이 되는 것은 아님. 테스트 환경을 구축 DirtiesContext → DB 영향은 없고, 기존 컨텍스트를 더렵혀서 매번 새로운 Bean이 로드되게 한다. MockBean(Mock 객체 테스트시) → 스프링 컨텍스트가 재사용 불가할수도 있다. 테스트는 빠른 피드백이 필요!!! (느림)E2E > Intergration > Unit (빠름) 공통된 테스트 환경(Test Context)을 설정 메소드분리를 통한 가독..
[배경지식 및 용어] pem 키 "Privacy Enhanced Mail" Apache 및 기타 웹 서버 플랫폼에서 사용되는 디지털 인증서 및 키에 대한 일반적인 컨테이너 형식 Bastion bastion host는 네트워크 특별히 설계된 공격을 견딜 수 있도록 구성에서 특수 목적 컴퓨터 컴퓨터는 일반적으로 단일 응용 프로그램 (예 : 프록시 서버) 을 호스팅하며 다른 모든 서비스는 컴퓨터에 대한 위협을 줄이기 위해 제거되거나 제한됨 ARP 주소 결정 프로토콜(Address Resolution Protocol, ARP)은 네트워크 상에서 IP 주소를 물리적 네트워크 주소로 대응(bind)시키기 위해 사용되는 프로토콜 OOM-killer 하나의 메모리 사용이 높은 프로세스를 죽이는 프로세서 노드 IP를 가..
클라우드 컴퓨팅을 사용하는 이유 클라우드 컴퓨팅: 인터넷을 통한 리소스 관리 관심사를 분리하여 서비스 제공자가 집중해야할 대상에 집중하게 한다. (서버실, 데이터센터를 이용할 경우)리소스를 관리하고 웹 환경을 만들기 위해서 관리할 대상이 많은데 이것을 클라우드 컴퓨팅 서비스를 사용함으로써 데이터를 원하는 형태로 가공하여 전달하는 것에 집중하게 한다. 네트워크 통신망: 노드와 노드를 연결하는 링크들로 구성된 시스템 노드: IP를 가지고 통신할 수 있는 대상(인스턴스, 네트워크 장비 등등) OSI 7 Layer 네트워크 통신과정을 단계로 나눈 것이다. 문제 발생시 어떤 레이어에서 문제가 발생했는지 찾기 수월해진다. 통신과정 3단계 PingCheck IP정보만으로 서버에 요청 가능한지를 확인 Ping은 ICM..
진행 3명의 면접관, 2명의 코치, 2명의 기록자로 이뤄서 모의 면접을 진행했다. 레벨1 학습로그를 기반으로 약 20분간의 면접과 종료 후, 짧은 피드백이 이루어졌다. 질문 자기소개? 비전공자 건축 프로그래밍에 관심 가진 이유? 사용해봤던 프로그래밍 언어? java를 사용하는 이유, java의 장점? 객체지향이 뭐라고 생각하나? 답변) 코드를 이해하기 쉽게 하는 도구 다양한 생성자와 인터페이스를 이용해 객체의 활용도를 높였다고 했는데 어떻게? 정적 팩토리 메서드란? 생성자를 다양하게 하는 것 vs 정적 팩토리 메서드로 다양하게 하는 것? 생성자를 다양하게 주는 것을 선택할 것이다. 캐싱이 아니라면 생성자를 다양하게 하다보면 인자가 많아질텐데 builder 패턴을 사용하면 좋다고 했는데 왜? Builder..
- Total
- Today
- Yesterday
- javascript
- 내부코드
- OS
- 운영체제
- java
- 우테코수업
- JS
- 카카오
- TCP/IP
- 객체지향
- TIL
- DB
- 글쓰기미션
- 우아한테크코스
- 알고리즘
- 코드스쿼드
- Spring
- 모의면접준비
- python
- Transaction
- JPA
- 회고
- 마스터즈코스
- 개발공부일지
- CS
- 네트워크
- 월간회고
- React
- 인증
- 학습로그
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |