본문 바로가기
📝 회고/✅ 22년 회고

[주간 회고] 22.03. 4주차 - "DIY : WAS 개발해보기"

by kukim 2022. 3. 27.

22.03월 4 ~ 5주에는 2명이서 페어 프로그래밍으로 Java를 활용해 WAS를 밑바닥부터 구현하는 프로젝트를 시작했다.

전에 C++을 활용해 멀티 플렉싱 Web Server를 구현했는데 Java를 활용해 WAS 구현은 비슷하면서도 다른 느낌이었다. 먼저 Java에서 소켓 프로그래밍이 상당히 간단하다는 것에 놀랐다. C++에서 소켓 프로그래밍을 위해 socket() 생성하고 Setsocketopt()으로 소켓 옵션 설정하고 Bind() 한 다음 Listen() 대기한다. 클라이언트 connect에 따라 Accpet()하고, 클라이언트와 연결된 통신용 Socket의 입, 출력을 fd(파일 디스크립터)로 관리하여 Send, Recv 했었다. 자바에선 아주 간단히 ServerSocket()을 만들고 accpet()만 하면 클라이언트와 통신할 준비가 완료되었다. 클라이언트 소켓 통신 연결이 오면 연결된 Socket이 생성되고 생성된 소켓의 input, ouput Stream으로 손쉽게 통신할 수 있었다. 멀티 스레드 동작도 쉽게 구현할 수 있었다. 아직 keep-alive 연결은 구현하지 못했지만 앞으로 어떻게 구현될지 기대된다.

또한 이전 과제에서 Spring을 사용하며 어떻게 작동할까 궁금증이 들었다. 이번 과제에서 직접 WAS를 구현하면서 구조 리팩터링을 하며 좀 더 편리한 방법이 없을까? 하는 고민은 자연스레 servlet, spring 구조로 이어졌고 프로젝트 코드도 자연스레 spring 구조로 맞춰지게 되었다. 좀 더 나만의 방식을 구현했으면 했지만 servlet, spring을 작게나마 스스로 구현해본 경험으로 만족하려 한다. 

노란색 : Java Socket Programming, 그 외 : C Socket Programming (출처 : https://www.javatpoint.com/socket-programming)

 

📚 배운 것

월요일 (03.21)

- 알고리즘 문제 풀이 (백준 1182, 1759, 20003, 6603)

- 프로젝트 Java WAS : 페어 프로그래밍 시작, Step1 구현, PR

- 글 작성 : [☕️ JAVA/🦋 Effective Java] - 매개변수가 유효한지 검사하기

 

화요일 (03.22)

- 프로젝트 스프링 카페 Step4 PR

- 프로젝트 Java WAS Step2 구현

- 김영한님의 스프링 MVC 1, 세션 6 수강, 구현

- 독서 : 토비의 스브링 1.3 ~ 1.4 제어의 역전 

 

수요일 (03.23)

- 프로젝트 Java WAS Step2 PR

- 김영한님의 스프링 MVC 1, 세션 6 수강, 구현

 

목요일 (03.24)

- 호눅스 DB Join 강의

- 프로젝트 Java WAS step3 구현

- 김영한님의 스프링 MVC 1, 세션 6 수강 완료, 구현

- 김영한님의 스프링 MVC 1, 세션 7 20%, 구현

 

금요일 (03.25)

- 프로젝트 Java WAS step3 리팩토링 80% (Servlet 형태, 코드)

- 알고리즘 문제풀이 리뷰

 

토요일 (03.26)

- 주간회고 작성

- 독서 : AWS 인프라 구축 가이드 ch 1 ~ 3

- 글 작성 : Production Server(운영 서버)와 아키텍처 (Feat. AWS)

 

일요일 (03.27)

- 김영한님 스프링 MVC1 강의 수강 완료! (코드)

- 휴식

 

댓글