글쓴이 글 목록: opener

[JSP & Servlet 배경지식] 1. 동적인 웹 페이지를 위한 CGI 2014-09-19

> 사용자는 브라우저를 켜고 원하는 웹사이트에 들어가 정보를 조회 한다. 하지만 웹사이트에서 모든 정보를 조회할 수 있는 것은 아니다. 권한을 부여받고 인증을 거쳐야 하는 정보도 있다. 사용자가 정보를 요청하면 다른서버에 데이터를 조회 해야하는 경우도 있다. 즉, 동적인 웹페이지를 나타내야 할 필요가 있고, 이를 위해 CGI(Common Gateway Interface)가 존재하며, 이를 이용하여 동적인 페이지를 HTML형태의 정적인 페이지화 하여 브라우저로 전송 받는다. CGI에 대한 자세한 설명은 위키 참고 [CGI : 공용 게이트웨이 인터페이스]

>>> 정적인 웹 페이지 : 서버에 이미 저장되어있는 페이지
ex) 단순 정보 알림페이지를 보여준다.

정적 웹페이지

>>>>>> description
– 정적웹페이지를 호출하는 과정
① 클라이언트가 웹서버에 정보를 요청한다.
② 웹서버는 이미준비되어 있는 정보를 조회한다.
③ 조회된 정보를 응답한다.
④ 응답받은 데이터를 브라우저가 해석하여 사용자에게 보여준다.
>>> 동적인 웹 페이지 : 요청된 정보를 처리 또는 서버의 정보를 조회하여 실시간으로 만들어진 페이지
ex) 상황별 또는 사용자별로 다른 페이지를 보여준다.

동적 웹페이지

>>>>>> description
– 동적웹페이지를 호출하는 과정
① 클라이언트가 웹서버에 정보를 요청한다.
② 웹서버는 웹어플리케이션서버에 클라이언트의 요청대로 처리를 의뢰한다.
③ 요청값을 구현된 로직 또는 연결된디비와의 통신을 통해 처리한다.
④ 처리된결과를 정적인형태로 웹서버에 반환한다.
⑤ 웹어플리케이션서버로 부터 받은 결과를 가공하여 응답한다.
⑥ 응답받은 데이터를 브라우저가 해석하여 사용자에게 보여준다.

 

[모바일 게임서버] 1. 시스템 설계 2014-09-05

1. 모바일 서비스

> 일반 서비스 개발과는 다르게 모바일은 고려할 사항이 많다. 서버 / 클라 측면에서 다음사항을 고려하여 프로젝트를 진행해야 한다.

- 다양한 OS에 대하여 대응해야 한다.
- 다양한 화면크기에 대응해야 한다.
- 작은 화면임을 고려하여 꼭 필요한 기능으로 화면을 구성해야 하며 사용자 이용 편의성을 최대한 고려한 직관적인 UI 설계가 필요하다.
- 전력소모를 고려해 화면 메인색상, 페이지 로딩 용량, 캐쉬 데이터 활용여부 등을 결정해야 한다.
- 이미지 로딩에 많은 시간과 데이터를 소모하지 않도록 크기, 용량, 형식을 적절히 한다.
- 이동하면서 사용이 가능 할 수 있어야 하므로 자주 끊기게 되는 상황을 고려한다.
- 아직까지 기기의 사양이 뛰어나지 못하므로 무조건 뛰어난 그래픽을 고려하기 보다는 적절한 수준의 퀄리티를 보여 주어야 한다.

2. 모바일 게임서버

> 시스템 설계는 항상 정확한 답이 없다. 아무리 잘 짜여진 architecture 라도 부족한점이 있고 이를 보완해 프로젝트 진행이 원활하도록 하는 것이 중요하다. 경험상 중요하다고 생각하는 몇가지를 적어본다.

- 응답성 향상을 위하여 서버 및 기타 서비스용 하드웨어 아키텍쳐를 반영하여 구성한다.
- 신속 정확한 서비스 개발 및 운영이 이루어질 수 있도록 배포시스템의 구성이 필요하다.
- 장애에 대비하여 시스템 이중화를 항상 고려해야 한다.
- 팀간 또는 팀원간에 원활한 커뮤니케이션을 위해 문서화 및 적극적인 회의참여를 유도한다.
- 효율적인 업무 협업이 될 수 있도록 형상관리툴을 적극 활용한다.

3. 모바일 게임서버의 일반적인 구성도

모바일게임서버

4. 디비서버

- 트래픽이 몰렸을 경우 가장 문제가 많이 발생하는 것은 디비이다. 테이블 설계시 인덱스를 잘확인하도록 해야하며 이중화하는 것을 잊지 말자.
- 관계형데이터 베이스로 작업시 유리한 점이 많지만 데이터량이 증가할경우 대응하는데 무리가 있을 수 있다. 이럴경우 NOSQL디비를 고려 하는것도 좋다.

5. 캐시서버

- 관계형데이터 베이스로 작업시 유리한 점을 그대로 활용하고 부하를 캐시서버로 분산시킬 수 있다. Redis, Memcached 등이 사용된다.
- 특히 redis의 경우 영구적인 데이터 저장 및 다양한 기능을 제공하므로 활용도가 높다.

6. 웹서버

- 로드벨런싱을 통해 여러대의 웹서버에서 부하를 분산시킨다.
- 웹서버의 경우 메모리를 많이 사용하지 않으므로 남는 메모리를 캐쉬서버의 용도로 사용할 수 있다. 이렇게 되면 서버 비용을 줄일 수 있다.

7. 채팅서버

- 게임에서 채팅이 필요할 경우 채팅 서버를 구축해야 한다. 접속자가 많아질 경우 채널을 분리해야 하고 타 채널끼리의 통신을 위해 중계서버를 두어야 한다.

[C++ 정리] 키워드 목록 2014-09-02

키워드는 변수의 이름으로 사용이 불가능함

asm auto bool
break case catch
 char class const
const_cast  continue  default
 delete do double
dynamic_cast else enum
 explicit export extern
false float for
 friend goto if
inline nt long
 mutable namespace new
operator private protected
 public register reinterpret_cast
return short signed
sizeof static static_cast
struct switch template
this throw true
try typedef typeid
typename union unsigned
using virtual void
volatile wchar_t while