Web 개발 용도별 기술선택

간단하게 만들려면 js, python이 좋다??

로그인, 디비 정도만 딱 붙이고 추가기능이 전혀 없을 경우….

보안이나 벨리데이션 신경쓰지 않고 프로토타이핑을 하는 경우에 한해서는

js, py가 괜찮은 선택이다

완성된 프레임워크 Spring, RoR

조금 제대로된 뭔가를 만들려면 이런걸 쓸 수 밖에 없다.

python으로 뭐 하려면 멀티스레드 지원 때문에 엄청 불편하다

모든걸 편법으로 처리해야 하는데 Queue, multiprocess, Celery 등등.. 이것저것 하다보면

전혀 간단하지가 않다

메시지 기반 Akka 프레임워크

게시판 종류의 서비스 말고 좀 복잡한 서비스 만들 때 … 필요하다.
거래소, 쇼핑몰 등 실시간, 비동기성이 좀 필요한 경우

Storm, Flink, Kafka, Kafka Streams 정도는 써 봤는데

Flink, Storm은 지들이 알아서 분산형 데몬을 관리 해 줘야 할 것 같은데… 그런부분에서 상당히 기능이 부족하다. 디버깅도 힘들고…유닛테스트도 힘들다. 분산형 키값공유 aggregate가 될 줄 알았는데…. 안된다. kafka와 효율면에서 뛰어나지 않다. 별 수 없겟지.. scale out을 할 때 kafka보다 더 이상 효율적이기는 힘들 것 같기는 하다.

이런저런 이유로 복잡도를 털어내고 사용하려면
kafka streams를 docker 환경에서 배포하는게 더 괜찮은데…
메시지 처리나 시리얼라이저 등등 여러부분을 직접 관리 해 줘야하는게 문제다.
그럼에도 불구하고… 나쁘진 않다.
여러 언어 지원 안되는게 조금 약점..이라고 할 수도 있지만 잡언어 안쓰면 되지

elixir도 akka처럼 액터기반 프레임웤인데 언어가 생소하니 접근성이 떨어지고 만들어놔도 인력 구하기도 힘든 문제가…

Akka로 이런 부족함을 채울 수 있을지 모르겠다

-테스트 더 해서 추가-

Proceee Manager – python, node, ruby …

자바계열에서는 많이 쓸 일이 없는데.. 스레드로 해결하면 되니까

싱글스레드.스크립트 언어에서는 필수적이다

종류

  • PM2
  • Unicorn
  • Gunicorn
  • Uvicorn(ASGI)
  • uWSGI
  • Foreman
  • Supervisord
  • forever
  • honcho

PM2

node.js
ecosystem.config.js 파일로 설정 관리

사용편리 프로세스 관리 편리 백그라운드 포어그라운드 가능

Foreman

ruby
Procfile 파일로 설정관리

heroku, dokku 등등과 설정파일을 함께 사용

Gunicorn

python
ini 파일로 설정관리

설정파일 안쓰는편… docker에서 foreground로 돌릴 때 좀비가 되는 경우가 있음 주의


나머는 모르겠다. 장단점

SPA:SinglePageApplication과 SSR:ServerSideRendering

SSR을 하면 SPA가 필요없음

봇이 들어왔을 때 구분해서 SSR을 쏴주거나 한다면 모르겠는데
그렇게 되면 봇이 보는페이지랑 사용자가 보는 페이지가 달라질 가능성도 있겠고
복잡도 증가로 성능문제도 있겠고

SPA는

트위터, 페이스북처럼 완전개인화된 1회성 페이지에만 사용

Xpressengine3는 아직 미완성인가

SSIBAL 이거 돌아가는거 맞나?

composer install 하면 뭔가 경고가 엄청 뜬다. 의존성 오류가…?
보니까 composer.lock이 ignore가 되어있다.
php, composer 모두 정해진 버전을 써야할 것 같은데 알 길이 없다.
.lock, .phar 등등은 gitignore에 포함시키지 말아야 하는거 아닌가?

developement 환경은 왜 셋팅도 안 되어 있는건가
sqlite에 달아주던가 해야 데모 테스트도 해 보고 쓸지 말지 결정할텐데

Docker 공식 이미지를 제공을 안 하길래 만들어서 써볼까 했는데
제대 돌아가질 않는다.
docker에서 terminal install을 하는경우 디비가 이미 생성 돼 있으면 넘어가주거나 하면 좋을텐데 에러를 토해낸다.
그럼 웹 설치만 해야되겠군…
latest.zip를 받아서 다시 만들었는데 localhost/만 접속이 되고 localhost/auth .. 등등 다른페이지가 안뜬다. 뭔가 손이 많이 간다.

config쪽이랑 installer env 네이밍이 너무 제각각사용된다. 그리고.xe_install_config.yml은 환경변수를 받지 않아서 꼭 파일을 넣어줘야 하는 것 같다.

redis를 넣어줬더니 predis가 필요하다고 한다.
다이내믹하게 설치가 되는건 아닌가본데… 그럼 서버 실행전에 composer install을 해 줘야한다는건데…

기능개발보다 안정화를 먼저 해야 사용자층을 넓힐 수 있지 않을까
며칠 보다보니 고쳐서 쓸 수는 있을 것 같은데 계속 이런상태일 것 같아서 고민이다.

그냥 안쓰는게 나을 것 같다.
wordpress, joomla 등등의 대안이 있으니까
이정도로 불안정한 플랫폼으로 서비스를 만드느니 새로 만드는게 나을 것 같다.

웹사이트 사용기술 알아내는 방법

직접 확인방법

공개된 정보 활용

  • 커뮤니티 질문 또는 글 검색
  • 해당 서비스 채용글 확인
  • StackShare 등의 사이트에 공개된 정보 확인
  • 해당 서비스의 기술블로그

기술적으로 확인

  • HttpHeader, Response 확인
  • 관용적으로 사용되는 주소 패턴 확인
  • Html 메타데이터 확인
  • CSS/JS 형태확인(컴파일?/소스형태)
  • Static파일의 서비스 형태

서비스 사용

이런걸 궁금해 하는 사람들을 위해 주소만 입력하면 확인할 수 있도록 도와주는 서비스가 많이 있다.

W3Techs (https://w3techs.com)

  • 웹에서 주소입력(https://w3techs.com/sites)
  • 브라우저 확장(FireFox, Chrome)

WebApplyzer (https://www.wappalyzer.com)

  • 웹에서 주소입력(https://www.wappalyzer.com/lookup)
  • 브라우저 확장(FireFox, Chrome, Edge)
  • Node 모듈

BuiltWith (https://builtwith.com)

  • 웹에서 직접사용 (https://builtwith.com)

isitwp (https://www.isitwp.com)

  • 웹에서 주소입력 (https://www.isitwp.com)

PageXray (https://pagexray.com)

  • 브라우저 확장 (Chrome)

Whatruns (https://www.whatruns.com)

  • 브라우저 확장 (Firefox,Chrome)

SimilarTech (https://www.similartech.com)

  • 웹에서 주소입력 (https://www.similartech.com)

Process Manager

불안정한 쩌리랭기지들을 위한 도구

python, node, ruby

Unicorn

개발 언어 : ruby
https://github.com/phusion/unicorn

Forever

개발 언어 : nodejs
https://github.com/foreversd/forever

pm2

개발 언어 : nodejs
https://github.com/Unitech/pm2
nodejs, python

supervisord

개발 언어 : python
http://supervisord.org
https://github.com/Supervisor/supervisor

pman

개발 언어 : python
https://github.com/FNNDSC/pman

ptop

개발 언어 : python
https://github.com/darxtrix/ptop

php-pm

개발 언어 : php
https://github.com/php-pm/php-pm

스파크 – 새로운 자바 웹 프레임워크

http://sparkjava.com/

스프링의 어노테이션 범벅 구조에 좀 질려있는 상황에서

간단히 메서드 체인 형태로 구성할 수 있는 프레임워크가 나와서 조금 반갑다.

그레일즈와 비슷한 구조?

다른건 제대로 써본게 없어서 정확히 비교를 못 하겠다.

아직은 초기라서 많은 기능지원이 없을 것 같다. 직접구현해도 나쁠것은 없지만….

회사일을 하다보면 그게 쉽지 않으니

추가적인 것은 나중에 확인.

SpringWebFlow – 왜 쓰나 어떨 때 쓸까

이걸왜쓰나

이 프레임워크의 존재는 오래전부터 알았지만 이걸 쓸 생각은 한번도 안해봤다.

그냥 별로 쓸모가 없어보여서… 이런짓을 왜 해야되나 싶었다.

그냥 controller에서 리다이렉트하고 뭐 하면 되는데

 

그런데 최근.. SSO서비스를 만들면서 플로우가 너무 꼬여서 고생하고 나니 생각이 바뀌었다.

소셜로그인 때문에 OAuth의 redirect까지 끼어들고 나니 코드가 뭐가뭔지 정신이 하나도 없었다.

그래서 사용하기로 결정.

사용법은 매우 쉽다. 웹 플로우의 필요성을 느꼈다면 설명은 필요없어보인다.

 

장단점

아쉬운점은 xml이고 spring boot에서 별로 지원이 없다는 점.

아직 쓸모가 있고 수요도 있는데

업그레이드는 되지 않는 것 같다.

SpringBoot에서 참견을 안하니까 알수없는 오류의 구렁텅이에 빠지는 일도 없고

심플하고 오래된 프레임워크라 버그가 없을 것만같다. (아직 안써봤다)

 

활용 시나리오

ex0) SignupFlow

로그인-> Y -> end.메인화면으로.view

-> N -> 회원가입폼.view -> email? -> EmailFlow

-> social? -> SocialFlow

ex1) EmailFlow

~~~

ex2) SocialFlow

~~~

 

문제점

적용하면서 시간낭비 하다가 다 빼버렸다.

쓴다면 플로우가(Scene이?) 3단계 이상인 경우에만 쓰는게 좋을 것 같다.

 

나갔다가 돌아오는 경우에 사용할 수 없다.

ex)이메일인증, OAuth 등의 경우

RequestParam, Cookie 또는 Session을 선택적으로 쓸 수 있는 환경이 필요해 보인다.

XML설정이 매우 불편하다.

시간날 때 GroovyDSL 형태로 만들어보는게 좋을까

중간진입 불가

flow는 항상 처음부터 시작되는걸로 여러개 만드는 방식도 좋지만

중간진입이 필요한 경우도 있지 않을까? 이건 좀 애매한 부분.

Form-Post방식의 화면전환

_elementId_{name} 형태로 써서 보내야 되는데

오지게 불편하다.

Front 계열 기술정리

너무 많아서 뭘 쓸지 모르겠다
정리가 분류가 맞는지도 모르겠다.

블로깅 솔루션

Jekyll

마크다운을 텍스트로 저장하고
변환라이브러리를 이용해서 html을 만들어내는 방식인데
블로깅 용도로 쓰기에는 워드프레스나 도쿠위키보다 나아보인다
dokuwiki, mediawiki같은걸 개인용위키로 쓰기도 했는데… 개인용위키는 히스토리보다 현재상태가 더 중요하기도 하니까
디비에 꼭 저장힐필요도 없고
git로 버전을 관리하는게 괜찮아보인다.

wordpress

dokuwiki

mediawiki

뷰 프레임워크

Angular1, Angular2, Blaze, React, MeanStack, vue.js, cycle.js, ember, polymer, riot

App

Cordova, Phonegap

빌드

Gulp, Grunt, Webpack

의존성 관리

npm, yarn, bower, browserify

라이브러리

latex : 수식 보여주는 문법..라이브러리라고 분류하기는 좀 다를 수 있다