[토스트루키 캠프 4기] 질문 LIST
목적
루키캠프가 어느덧 절반이상이 지나있는 이 시점에 이미 늦은 것일지도 모르겠으나, 문득 모든것이 너무 빨리 지나가서 교육내용을 소화시키지 못하고 그냥 지나쳐 간다는 생각이 들었다. 그래서 모든 질문은 최대한 그때그때 답을 얻어야겠다고 생각했으나 미천한 나의 지능이 모든것을 그리 빨리 습득하지 못하고 있으므로, 모르는것이 생기면 적어두었다가 나중에 정리해놓고 공부해야겠다는 생각이 들었다. 그래서 이번주부터 질문 리스트를 작성하고 그것을 하나씩 공부하고 답해가면서 리스트를 체크해 지워나가기로 했다.
QUESTIONS!!
일반
- 서버 배포 방법
TDD 수업 (feat. JUnit)
- IntegrationTest vs Unit Test
- * 어느것을 언제 어디서 사용하는가?
- Mockito는 반드시 사용하는가?
- Stub/Stubbing
- Provisioning
- Vagrant vs Docker
읽기 좋은 코드
- ps-ef = Jenkins file?
- Validation은 Validator
Spring MVC
- SET 와 LIST의 차이
- Stereotype annotation: (conponent -> 기타3개 아무거나 가능)??
- Exception Handling: 최상위 = throwable(?)
- @ControllerAdvice: 모든 Exception을 하나의 class에서 Handling
- Binding Results, JSR 303 @Valid
- Repository Layer: controller -> service -> repository
- @Controller, @Service, xml을 통한 bean 설정이 각각 어떤 설정을 하고 어떻게 다른가?
- Annotation 주입이 이 XML 주입 이전에 수행된다!
코드리뷰
Sprint 6
- Dictionary와 Map의 차이
-
한 interface에 연결되어 있는 다양한 qualifier를 상황에 맞게 바꾸어 적용하는 방법
Map<K,V> oauth = new HashMap<K,V>(); oauth.put("payco"m new Payco());
와 같은 형식으로?!
- REDIS에 session Object한개를 통채로 박지 말고 KEY(SSID,KEY) 로 Value갑을 집어넣는 방법
- @LoginRequire / @Valid 와 같은 annotation 으로 로그인 여부에 따라 접근성을 제어하는 방법
- annotation 을 사용하여 session을 parameter 로 받아오는 방법
-
FallbackSession 과 같은 함수를 만들어서 REDIS/DB와 같이 여러 SESSION관리 방법 활용
FallbackSession(List<Session> sessions)
Sprint 7
- Service 를 Interceptor/Resolver에서 쓰는것이 맞는가?
- Service 함수 내에서 Autowire를 하고 Intercepter에서 그 함수를 호출하면 request값이 제대로 적용되지 않는것 같다 왜그런가?
Database 검수결과
- 반정규화
- 인조/본질 식별자
TalkDay
- 해외 컨퍼런스 방문 어떻게하나요?
- 개인에 대한 평가 vs 팀 단위 평가
OAuth
- RSS
- RFC로 정의되어있다?
- Session의 생명주기
- CSRF, XSS
- JWT
신입기술교육 (SQL)
- Key-length = index의 row당 크기(??)
bash / Shell command
- netstat
- grep
- exit 0, exit 1
Spring Scheduler @annotation
- cron / cron expression
Maven
- repository 추가 (nClavis 넣을 때 nhnentRepository.naver를 추가해야 했다.)
Apache
Configuration apache/conf/httpd.conf
- Modules
- proxy_module, proxy_connect_module, proxy_http_module.. etc…
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.s
-
DomuentationRoot "/home1/irteam/deploy/naver-example"
로 잘못되어 있는데도 웹페이지는 똑바로 뜬다. Apache에서 해주는DocumentationRoot
의 설정은 아무 의미가 없는것인가? -
<VirtualHost *:80>
안에ServerName
ServerAlias
모두 example.naver.com 으로 설정되어 있는데도 웹페이지는 똑바로 뜬다. Tomcat만 중요한가? 이것이 하는 일은 무엇인가
Tomcat
Configuration tomcat/conf/server.xml
-
<Server port="8005" shutdown="SHUTDOWN">
vs<Server port="8001 shutdown="SHUTDOWN"">
아무거나 쓰면 되나? - Connector 포트는 어떤걸 쓰고 왜 그걸 쓰나? 이것의 의미는?
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="9001" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
nClavis
- DB정보를 받아오는것 까지는 알겠는데 받아온 정보를 기존에 Spring이 구동될 때 .xml에 실어서 DataSource Bean을 미리 생성해버리는 방식에서 언제/어떻게 runtime 도중에 DB정보를 받아와서 DataSource Bean에 주입시키는지를 모르겠다.
Database Scale out
- Database 가 2개 이상이 된다면 어떠한 설정으로 모든 DB를 바라보게 할 수 있나?
Vitess
Architecture
Topology
vtgate
vttablet
vtctId
vtworker
History
출처 - http://vitess.io/overview/
Topology - Detailed
출처 - http://vitess.io/user-guide/topology-service.html#replication-graph
nClavis
가이드
출처 - http://devcafe.nhnent.com/index.php?mid=intro&act=dispWikiContent&vid=skey
Server
-
2017-02-28 서비스 운영 과제를 시작하기 전 20%대 초반을 유지하던 Memory Usage가 2017-03-07 확인해 보았을때 95%를 상회하고 있다. 무엇이 이토록 많은 Memory를 사용하고 있는 것일까?
- 답: buffer/cache를 포함한 메모리라 상승했던것이고, Jenkins과 같은 다른 프로그램이 일을 하고 있어서 그랬다. 자세한 사항은 htop/top free등의 메모리 수치와 관찰을 통해 알 수 있다. (memory관련 글 참고)
안정적인 서비스 운영
- 분산파일시스템 - HM을 높인다
- Jennifer -> Scouter
- 동적쿼리 vs 정적쿼리
웹 개발 보안과 시큐어 코딩
- SSH
- SSL
- XSS & CSRF
- 버전정보도 취약점에 포함
- TRACE 요청으로 XSS 공격 가능
TalkDay 2017-03-03
RDBS(Relational Database Service) Architecture 소개 - Cloud 플랫폼 정기효
- 고도화 - HA
- SaltStack
- DMZ Zone
Adapt 소개 - Dooray 개발실 이상민 수석
- Scouter
- Gatling
- Scala
- JPA N+1 쿼리 (하나의 요청이 왔을 때 동일한 쿼리를 여러번 호출)
시스템 구성도 그리기 - 이상민 선임
- 전금법
자바 성능 튜닝 이야기
- 동기화
- Velocity
- Memcached Hash Ring
Java
- Serializable
- Static {}
- Reflection
- ‘Pattern’ class
Pattern
- Business Delegate
- Service Locator
- Session Facade
- Transfer Object
- DAO
기타
- ACL
- Log 남기는 시점 (debug info warn error …)
- Exception 처리 (보통 Exception은 어떻게 처리해야하나? 무조건 로그남기고 던지나? 어떡하나?)
BUG / ERROR
OAuth
RestTemplate
로그인 과정에서 에러
HTTP Status 500 - Request processing failed; nested exception is org.springframework.web.client.HttpClientErrorException: 400 Bad Request